ssllabs.com评分A+的nginx ssl配置
什么是 ssllabs ?
ssllabs是一个在线版全球知名的HTTPS 网站检测工具 。 Qualys SSL Labs 同时也是很具有影响力的 SSL 安全和性能研究机构。在线监测地址为:https://www.ssllabs.com/ssltest/index.html
使用openssl工具生成自己的证书
- 生成一个RSA秘钥
openssl genrsa -des3 -out demo.key 2048
要记住这里输入的密码,在下面的步骤中都会用到 - 拷贝一个不需要输入密码的密钥文件
openssl rsa -in demo.key -out demo_nopass.key
这个秘钥会在nginx的配置中使用到,如果使用上面的秘钥,nginx重新加载配置文件都要输入密码 - 生成一个证书请求
openssl req -new -key demo.key -out demo.csr
- 使用SHA-2签名算法,生成证书
openssl req -x509 -sha256 -days 365 -newkey rsa:2048 -key demo.key -out demo.crt
- 生成交换秘钥
openssl dhparam -out dhparam.pem 2048
秘钥的位数越大,生成秘钥花费的时间越长,默认 2048
配置nginx
server {
listen 443 ssl;
ssl on;
server_name demo.com;
root /data1/www/demo;
access_log /var/log/nginx/demo-access.log main;
error_log /var/log/nginx/demo-error.log warn;
ssl_certificate /usr/local/nginx/conf/conf.d/ssl/demo.crt;
ssl_certificate_key /usr/local/nginx/conf/conf.d/ssl/demo_nopass.key;
resolver_timeout 1d;
#ssl 会话缓存配置,参考:http://nginx.org/en/docs/http/configuring_https_servers.html
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_dhparam /usr/local/nginx/conf/conf.d/ssl/dhparam.pem;
#不再使用旧的不安全的 SSLv2 和 SSLv3
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers
'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
resolver 202.106.0.20 8.8.8.8 valid=300s;
}