在 Ubuntu 上打包安装新版 OpenSSL

Hacks Mar 17, 2016

因为 Ubuntu 14.04 包管理里的 OpenSSL 是很老的版本了,所以只能自己动手。为啥不直接源码安装?虽然源码安装非常简单快速还方便,但是一旦到了卸载的时候就懵逼了,和包管理碰到依赖问题更是难以解决。还是乖乖打包成 deb 吧。

本来以为打包不是什么难事,尤其是 dpkg 这种成熟的包管理器。按照 Ubuntu Packaging Guide 这篇文章折腾了两天后发现,Ubuntu 打个包实在是太难了……和我最喜欢的 Arch Build System 相比,在 Ubuntu 上打包可能会遇到各种难以解决的错误,而且社区 wiki 资料不多(相比 Arch)。

正因如此,最终还是决定使用 checkinstall 打包,非常方便快捷。虽然功能有缺乏,不过对我来说是完全够用的。首先安装:

sudo apt-get install checkinstall

下载并解包 OpenSSL 源码:

wget https://www.openssl.org/source/openssl-1.0.2g.tar.gz
tar xvf openssl-1.0.2g.tar.gz
cd openssl-1.0.2g

接着找出老版本 OpenSSL 安装时的参数。理论上没有这步也可以,但是为了防止兼容性出现问题还是加上吧。

在 LauchPad 上找到旧版本编译时的参数,比如我的 Ubuntu 14.04 OpenSSL 1.0.1f-1ubuntu2 的 buildlog这里,其他的也大同小异。定位到 ./Configure 语句:

./Configure --prefix=/usr --openssldir=/usr/lib/ssl --libdir=lib/x86_64-linux-gnu no-idea no-mdc2 no-rc5 no-zlib  enable-tlsext no-ssl2 enable-ec_nistp_64_gcc_128 enable-ec_nistp_64_gcc_128 debian-amd64

记下参数,没有问题就可以开始编译了[1]

./config --prefix=/usr --openssldir=/usr/lib/ssl --libdir=lib/x86_64-linux-gnu no-idea no-mdc2 no-rc5 no-zlib  enable-tlsext no-ssl2 enable-ec_nistp_64_gcc_128 enable-ec_nistp_64_gcc_128
make

如果有出错,注意看提示,缺啥装啥。没事喝杯茶等会,挺慢的。滚完就可以安装打包了。

sudo checkinstall

~~接着喝上一步没喝完的茶。~~等安装完了之后,系统原有的 OpenSSL 应该已经被取代了,可以通过 dpkg 管理。打出的包在同目录里,ls 一下就可以看到。[1:1]


记得运行 openssl version -a 看下是否安装成功。OpenSSL 搞定了,那么现在是时候折腾 Nginx 了。


  1. 如果想滚回到旧版本,执行 sudo apt-get install openssl=1.0.1f-1ubuntu2 即可。 ↩︎ ↩︎

aLPHAtOAD

太年轻,太简单,有时候幼稚。