如何在 Nginx 中启用 TLS 1.2?

cod*_*efx 21 nginx openssl

如何在我的 Ubuntu 12.04 服务器中为 SSL 连接启用 TLS 1.1 和 1.2?我正在使用以下版本的 nginx 和 openssl 库。

$ ./nginx -v
nginx version: nginx/1.2.3

$ openssl version -a
OpenSSL 1.0.1 14 Mar 2012
built on: Tue Jun  4 07:26:06 UTC 2013
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_NO_TLS1_2_CLIENT -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/lib/ssl"
Run Code Online (Sandbox Code Playgroud)

qbi*_*qbi 16

首先,您需要在以下文件中激活 SSL/TLS nginx.conf

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.org;

    ssl_certificate /etc/ssl/example.org.crt;
    ssl_certificate_key /etc/ssl/private/example.org.key;
Run Code Online (Sandbox Code Playgroud)

这两listen行在您的 IPv4 和 IPv6 连接上启用 SSL。如果您没有 IPv6,您可能会省略第二listen行。

我假设您的服务器证书在/etc/ssl. 如果您使用其他路径,则需要更改最后两行。

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
Run Code Online (Sandbox Code Playgroud)

这将启用不同的 TLS 版本。当前所有的浏览器都可以使用 TLS1.2。对于较旧的浏览器,我写了一个小的如何启用安全设置

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
ssl_prefer_server_ciphers on;
Run Code Online (Sandbox Code Playgroud)

第一行设置您的 nignx 应该使用的密码。第二行更喜欢服务器(而不是客户端)端的密码套件。所以你可以使用强(er)密码。

如果你完成了,你的 nginx 应该使用 TLS1.2。如果您愿意,可以您的站点添加TLS1.2 名人堂并为此感到自豪。;)

但是,有几种方法可以改进设置。我按照此德语指南进行安全 nginx 配置


Lun*_*uno 1

nginx 的后续版本已解决了许多安全建议。如果您仍然处于这种情况(发布后 6 个月?),请认真考虑升级;如果 Web 服务器本身不安全,则 TLS 设置并不重要。有关详细信息,请参阅http://nginx.org/en/security_advisories.html

如果由于某种原因您必须运行此版本的 nginx,此处有关使用 nginx(或 Apache)启用强密码套件的信息可能会有所帮助: https: //community.qualys.com/blogs/securitylabs/2013/08/ 05/配置-apache-nginx-和-openssl-for-forward-secrecy