linux – 在Nginx上的SSL握手协商非常慢
|
我使用Nginx作为4个apache实例的代理.我的问题是SSL协商需要花费很多时间(600毫秒).以此为例: http://www.webpagetest.org/result/101020_8JXS/1/details/ 这是我的Nginx Conf: user www-data;
worker_processes 4;
events {
worker_connections 2048;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 0;
tcp_nodelay on;
gzip on;
gzip_proxied any;
server_names_hash_bucket_size 128;
}
upstream abc {
server 1.1.1.1 weight=1;
server 1.1.1.2 weight=1;
server 1.1.1.3 weight=1;
}
server {
listen 443;
server_name blah;
keepalive_timeout 5;
ssl on;
ssl_certificate /blah.crt;
ssl_certificate_key /blah.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / { proxy_pass http://abc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
该机器是Linode上的VPS,具有1 G的RAM.任何人都可以告诉为什么SSL握手需要多长时间? 解决方法你需要禁用“ephemeral diffie-hellman”密码.浏览器无论如何都不使用它们,但openSSL将与cURL或apachebench等工具一起使用.所以我打赌webpagetest.org正在使用它们.有关详细信息,请参见this thread. 我个人在nginx中使用这些设置来强制基于服务器首选项的最快但仍然安全的SSL密码,而不是浏览器: 更新2014-01-13:最近针对RC4的攻击,防止BEAST的浏览器更新以及客户端和服务器中TLS v1.2的更广泛可用性,此建议已更改. 更新2015-10-16:当前nginx TLS设置2015-10-16按照CloudFlare的建议.请检查更新的前一个链接,因为TLSv1可能会在某个时候从推荐的配置中删除.当前设置根据当前最佳实践和截至此日期的最新PCI-DSS禁用SSLv3和RC4. ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; 这取代了此答案中的早期建议,该建议已被删除以避免混淆. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
