怎样编译安装OpenSSL

2017年11月29日 | 分类: 【技术】

【介绍】

OpenSSL是一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

官网:https://www.openssl.org/

参考:https://blog.csdn.net/sszgg2006/article/details/8210832

【rpm安装最新版本】

下载:https://pkgs.org/download/openssl
下载:https://pkgs.org/download/openssl-devel

路径:

export OPENSSL_LIBS="-L/usr/lib64/openssl -lssl -lcrypto" OPENSSL_CFLAGS="-I/usr/include/openssl"

如果有通过yum/rpm安装的openssl,卸载方法:

rpm -e --nodeps openssl && rpm -e --nodeps openssl-devel

【从源码编译最新版本】

下载:https://www.openssl.org/source/

参考:http://www.linuxfromscratch.org/lfs/view/stable/chapter06/openssl.html
参考:https://blacksaildivision.com/how-to-install-openssl-on-centos

wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz && tar zxvf openssl-1.1.1b.tar.gz && cd openssl-1.1.1b
./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic
make
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
make MANSUFFIX=ssl install

更新系统动态连接库配置:

echo /usr/lib >> /etc/ld.so.conf && ldconfig

相关文件路径:

/etc/ssl/openssl.cnf
/usr/include/openssl
/usr/lib/engines
/usr/lib/libssl.so.1.0.0
/usr/lib/libcrypto.so.1.0.0

安装完成。

查看当前版本:

openssl version

输出:

OpenSSL 1.1.1b  26 Feb 2019

【排错】

报错:fatal error: zlib.h: no such file or directory

当编译 openssl 时,出现此报错。

参考:https://stackoverflow.com/questions/36374267/how-to-fix-fatal-error-zlib-h-no-such-file-or-directory

可以通过安装 libz-devel 解决。

参考:https://amon.org/zlib

报错:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

参考:https://serverfault.com/questions/818445/error-while-loading-shared-libraries-libcrypto-so-1-1

ln -s libcrypto.so.1.1 libcrypto.so
ln -s libssl.so.1.1 libssl.so
sudo ldconfig

升级安装完成后,必须 ldconfig 。

注意:需要重新编译php才能更新头信息

参考: https://amon.org/php55

查看版本(phpinfo):

openssl
OpenSSL support 	enabled
OpenSSL Library Version 	OpenSSL 1.0.2l 26 Sep 2016
OpenSSL Header Version 	OpenSSL 1.0.2l 26 Sep 2016

显示版本已经一致。

如果不一致,可能是在升级OpenSSL之后没有重新编译PHP。