我运行的是带有 nginx 的 centos 7.6 服务器。Centos repos 没有最新的 nginx,因此我使用以下说明手动编译这里。
这给我留下了一个 nginx 二进制文件:
nginx version: nginx/1.15.8
built by gcc 7.2.0
built with OpenSSL 1.1.1a 20 Nov 2018
TLS SNI support enabled
configure arguments: --sbin-path=/usr/local/sbin --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-pcre=/n/pcre-8.42 --with-openssl=/n/openssl-1.1.1a --with-zlib=/n/zlib-1.2.11 --with-file-aio --with-http_ssl_module --with-http_v2_module --with-stream --with-stream_ssl_module --with-threads
它与 TLS 1.3 兼容。
不过我也安装了 gcc 8.2https://cbs.centos.org/。它安装正确,我尝试使用新编译器重建 nginx。仍然是相同的输出,仍然是相同的二进制文件,但没有 TLS 1.3。Chrome 说这是一个 TLS 1.2 连接,SSLlabs 说不支持 tls 1.3。
我尝试用 gcc 7.2.0 重新编译,结果仍然是相同的。
可能出了什么问题?
谢谢。
答案1
这不应该依赖于 gcc,而应该依赖于 ssl 库。
我可以提出以下建议:
- 确保
--with-openssl=/n/openssl-1.1.1a
仍然指向正确的 openssl。 - 检查 nginx 与哪个 ssl 库链接:
ldd $(which nginx)
应该指向你的 openssl 版本,而不是系统范围的版本。 - 您可能需要重新编译 openssl 和 nginx 以确保一切正常。