我们前面介绍了如何通过Windows Server生成证书(Windows Server配置生成认证证书),也介绍了如何通过easy-RSA生成证书文件(使用Easy-RSA配置生成SSL证书)。
其实,我们再安装了一个崭新的CentOS之后,系统自带的有一个OpenSSL工具,这是一个强大的安全套接字层密码库,可以用于实现各种加密和认证协议,如 SSL/TLS;当然也可以生成证书。
不过系统自带的版本时间比较早,即使更新软件也还是这个版本。但如果我们访问OpenSSL官方网站(https://www.openssl.org/source/),我们能看到官网都已经是3.x的版本了,而且有明确提醒,1.0.2版本已经不被支持且应当停止使用。
目前在维护的这几个版本中,OpenSSL 3.0.14引入了新的 API,同时弃用了一些旧的不安全的功能,提高了安全性;OpenSSL 3.1系列引入了更多的新特性,比如支持TLS 1.3的零圆周密钥交换(0-RTT Key Exchange),更好的证书验证等;OpenSSL 3.2系列增加了对QUIC协议的支持,以及其他一些增强TLS安全性的特性;OpenSSL 3.3系列进一步增强了TLS和QUIC的功能,提升了性能,并且持续对代码进行了现代化改造。
如果老版本不能使用、并且无法通过yum更新的话,那就只能编译安装了。
在安装新版本之前,我们首先需要卸载旧版本。yum remove openssl
然后下载最新的3.3.1版本。wget https://www.openssl.org/source/openssl-3.3.1.tar.gz
编译安装可能会用到比较多的依赖,比如GCC编译器、perl等,经过多次尝试,发现依赖的编译环境如下:yum install -y gcc gcc-c++ zlib-devel libtool autoconf automake perl perl-IPC-Cmd perl-Data-Dumper perl-CPAN
解压下载的源码包。tar -zxvf openssl-3.3.1.tar.gz
进入解压后的目录:cd openssl-3.3.1
配置安装选项:
运行config脚本来配置安装选项,设置安装目录为/usr/local/openssl-3.3.1。./config --prefix=/usr/local/openssl-3.3.1 shared zlib-dynamic enable-ec_nistp_64_gcc_128
运行make命令来编译安装OpenSSL。make && make install_sw
安装完成之后,生成了新的执行文件,需要创建一个新的软链接指向新安装的 OpenSSL。
ln -s /usr/local/openssl-3.3.1/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3ln -s /usr/local/openssl-3.3.1/lib64/libssl.so.3 /usr/lib64/libssl.so.3ln -s /usr/local/openssl-3.3.1/bin/openssl /usr/bin/openssl
为了使系统能够在全局范围内访问openssl命令,需要更新PATH环境变量。编辑 ~/.bashrc 或 ~/.bash_profile 文件,在文件末尾添加环境变量。vi ~/.bash_profileexport PATH=$PATH:/usr/local/openssl-3.3.1/bin
保存文件后,刷新环境变量使其立即生效:source ~/.bash_profile
运行命令验证新安装的OpenSSL版本。openssl version
可以看到,2024年6月4日的3.3.1版本安装成功