Tls升级-将tls从1.0升级到1.2

背景: 某人在开发微信小程序时,调用测试环境的https接口,该接口由nginx提供代理服务,报错,说是不支持tls1 ,需要升级到tls1.2

环境: Ubuntu 16.04.5 LTS

查看ssl版本

1 cmd

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

2 chrome

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

然后在当前页面访问配置的域名。然后 安全(security) 下点击要查看的域名,即可在右侧的连接中的协议下,看到 tls 版本号。
Tls升级-将tls从1.0升级到1.2_第1张图片

升级操作总共分三步:
1 升级openssl 2 重新编译nginx (这一步可以尝试不操作,因为自己看openssl是以动态库的方式使用,但是自己没有试过跳过这一步) 3,修改配置文件

1 升级安装openssl

常见的比较方便的做法是使用系统的软件管理工具, 比如 apt, yum等。具体做法,可以在网上找资料。
此处还是使用源码手动安装:

下载openssl

在官网下载相应源码, https://www.openssl.org/source/

解压后安装

./config 
make
sudo make install

默认的安装目录:

/usr/local/ssl/bin/openssl
/usr/local/ssl/include/openssl

所以现在可以查看你安装的openssl 版本:

/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

然后

sudo vim /etc/ld.so.conf

/usr/local/ssl/lib 添加到上面文件中,报错退出,然后通过以下命令,可以看到自己安装的openssl版本号。

openssl version -a

2 nginx 重编译

由于之前别人是使用apt之间安装的nginx,当然可以直接重新编译生成nginx,然后替换 sbin/nginx,即可,具体实现,参见我之前文章,
给网站添加ssl证书(https)https://blog.csdn.net/a1368783069/article/details/80719768 中的 nginx 安装ssl模块 方法。
个人建议安装nginx使用手动编辑安装。
从官网下载nginx源码。解压文件,使用默认安装。

./configure
make
sudo make install

执行 sudo /usr/local/nginx/sbin/nginx 会提示没有安装与ssl 相关的modules, 则重新编译nginx

1、 生成文件 进入nginx安装文件目录,执行:

./configure --with-http_ssl_module
make
1 2 2、 替换nginx
首先关闭nginx服务(很重要)
在nginx安装文件目录下面,会生成一个 objs 目录,将 objs/nginx替换
/usr/local/nginx/sbin/nginx(两者都是nginx的可执行文件)。 重启nginx服务就行。
/usr/local/nginx/sbin/nginx -s reload

以上的操作,主要是理解nginx这种更新操作过程。
如果想一步到位,安装nginx,检测环境的时候,可以直接

./configure --with-http_ssl_module
make
sudo make install

3 更改nginx 配置文件

原来的配置文件中,
对ssl的设置时

ssl_protocols  TLSv1 TLSv1.1 TLSv1.2 ;

所有配置文件中的 ssl_protocols 都改为(有的会配置多个网站,每个都需要改):

ssl_protocols   TLSv1.2 TLSv1.1 TLSv1 ;

或者只保留 TLSv1.2 。
一般,可以检测配置文件是否有问题

/usr/local/nginx/sbin/nginx   -t

然后查看ssl 版本号。

其他

查看nginx安装使用的配置,以及添加的模块

nginx -V

参考文章:
为CentOS升级OpenSSL 让Nginx支持TLS 1.2
https://www.sunbloger.com/2016/12/26/543.html

nginx 配置TLS1.2无效总是TLS1.0 https://blog.csdn.net/wanderstarrysky/article/details/53336129

你可能感兴趣的:(ssl,linux)