为CentOS升级OpenSSL 让Nginx支持TLS 1.2

查看ssl版本

1 cmd

openssl s_client -connect domain:443 -tls1 (-tls1_1, -tls1_2)
其中domain 表示nginx 域名配置中使用https的域名(例如:www.baidu.com),以上命令可以查看,目前nginx支持的tls版本。

2 chrome

依次打开: 右键->审查(inspect) ->安全(security)。

然后在当前页面访问配置的域名。然后 安全(security) 下点击要查看的域名,即可在右侧的连接中的协议下,看到 tls 版本号。

为CentOS升级OpenSSL 让Nginx支持TLS 1.2_第1张图片

 

升级安装

1 准备工作:

下载新版OpenSSL源码包

https://www.openssl.org/source # openssl 官网,可查询当前最高版本

wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz #下载

2 解压安装

tar zxvf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
./config shared zlib-dynamic
make
make install

 安装完成后,我们可以通过默认的安装路径看一下版本号,如果显示OpenSSL 1.0.1u  22 Sep 2016就对了

/usr/local/ssl/bin/openssl version -a

接下来替换掉旧版,创建软连接

mv /usr/bin/openssl /usr/bin/openssl.old

mv /usr/include/openssl /usr/include/openssl.old

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl/ /usr/include/openssl

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

ldconfig  #通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。

替换掉后,我们就可以直接用

openssl version -a

再看一下版本号,如果显示的是新的版本号,就说明安装和替换都成功了

3.接着要看一下Nginx的编译参数

nginx -V 

如果不存在–with-openssl这样的编译参数,就说明Nginx采用的是动态方式编译的SSL,这种情况直接重启Nginx就好了,

否则就是静态方式的,需要重新对Nginx进行编译。

nginx重新编译

1.从官网下载你正在使用的nginx版本源码,解压文件。

2.进入安装目录

./configure #加上你的模块参数
make

3.替换nginx

#首先关闭nginx服务(很重要)
在nginx安装文件目录下面,会生成一个 objs 目录,将 objs/nginx替换
/usr/local/nginx/sbin/nginx(nginx的可执行文件)。

4.更改nginx 配置文件

原来的配置文件中,修改ssl设置,所有配置文件中的 ssl_protocols 都改为(有的会配置多个网站,每个都需要改)

ssl_protocols   TLSv1.2 TLSv1.1 TLSv1 ;  ###或者只保留 TLSv1.2 。
 

5.重启nginx服务

/usr/local/nginx/sbin/nginx -t  #检查配置
/usr/local/nginx/sbin/nginx -s reload  #重启

服务器重启之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错

nginx: [error] invalid PID number "" in "/run/nginx.pid"

解决方法:

nginx -c /usr/local/nginx/nginx.conf      #nginx.conf文件的路径可以从nginx -t的返回中找到。

nginx -s reload

 

 

你可能感兴趣的:(linux,nginx,linux,nginx,centos,ssh)