枫之叶 世界是平衡的,每个人都是通过自己的努力,去决定自己生活的样子。

Nginx 升级支持 TLS1.2,TLS1.3的几个坑

N

背景

需要给老的业务网站配置HTTPS服务,根据常规配置Nginx后无效,于是就催生了本文。

问题

网站配置了HTTPS,但是访问出现问题:

用于加载此网站的连接使用的是 TLS 1.0 或 TLS 1.1,这两个 TLS 版本都已过时,将在不久后完全停用。届时,用户将无法再加载此网站。服务器应启用 TLS 1.2 或更高版本。

解决

第一步:openssl版本

➜ openssl version -a
OpenSSL 1.0.2k  26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/ssl"

1.0.1以上的版本支持 TLS1.2

1.1.1以上的版本支持 TLS1.3

openssl版本满足条件,如不满足,需要重新编译安装。

第二步:Nginx重新安装【可选】

可选,看nginx是动态还是静态编译SSL,静态就需要重新编译安装。

➜  nginx -V
nginx version: nginx/1.12.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.1.0e  16 Feb 2017
TLS SNI support enabled
configure arguments: --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.40 --with-zlib=/usr/local/src/zlib-1.2.11 --with-openssl=/usr/local/src/openssl-1.1.0e

如果不存在–with-openssl编译参数:
- Nginx采用的是动态方式编译的SSL;
- 直接重启Nginx即可;

存在–with-openssl编译参数:
- 静态方式;
- 重新对Nginx进行编译;

第三步:Nginx配置

Nginx配置文件

ssl_protocols  SSLv2 SSLv3 TLSv1;

改为

ssl_protocols TLSv1.2;

Q&A

【已解决】如果升级了Openssl版本还是无效怎么办?

请仔细检查第二步、第三步。

参考

  • 为CentOS升级OpenSSL 让Nginx支持TLS 1.2:https://www.sunbloger.com/2016/12/26/543.html
  • nginx 升级支持 TLS1.2,TLS1.3:https://my.oschina.net/maliang0130/blog/3062027
  • 浏览器提示TLS版本过低, 要求升到TLS1.2或TLS1.3的一些问题收录: https://www.cnblogs.com/visionsl/p/12307240.html
  • How to Install and Update OpenSSL on CentOS 6 / CentOS 7: https://webhostinggeeks.com/howto/how-to-install-and-update-openssl-on-centos-6-centos-7/
  • 列出特定OpenSSL版本支持的SSL / TLS版本: https://www.it-swarm.dev/zh/linux/%E5%88%97%E5%87%BA%E7%89%B9%E5%AE%9Aopenssl%E7%89%88%E6%9C%AC%E6%94%AF%E6%8C%81%E7%9A%84ssl-tls%E7%89%88%E6%9C%AC/1050098974/
  • Openssl Changelog: https://www.openssl.org/news/changelog.html

(完)

About the author

Add Comment

枫之叶 世界是平衡的,每个人都是通过自己的努力,去决定自己生活的样子。

碎言碎语

有点小懒,不定期更新

分类目录

标签