REF:https://www.nginx.com/resources/admin-guide/nginx-ssl-termination/
http://nginx.org/en/docs/http/ngx_http_ssl_module.html
SSL中CPU消耗最大的是SSL握手阶段(握手过程:客户端请求连接,服务器返回公钥,客户端用公钥加密随机通讯密码,传输加密传到服务器,用私钥解密,并用通讯密码加密返回内容等工作),要提高性能,就要尽量减少这个操作的进行,官方给了两个建议:
1、启用KeepAlive,让一个连接发送和接收多个请求及其回应
2、启用SSL session cache,让之前建立SSL连接的客户,用同一个session建立起ssl连接时,可以免掉 服务端返回公钥,客户端用公钥加密随机通讯密码 这一次来回产生的通讯延时及计算能力消耗。
SSL SESSION实现有两种形式:
第一种:第一次建立SSL连接时,客户端保存服务器返回的 session Identifer及商定的通讯密钥,下次客户端开始申请通讯时带上这个identifer,这样服务器就从缓存中找到上次这个session通讯使用的协商后的密钥,继续进行通讯
第二种:第一次建立SSL连接时,客户端保存服务器返回的ticket,ticket是一个加密的包,里面包含了 通讯使用的协议,商定的密钥 等信息,但这个包由服务器加密,也仅能由服务器解开。客户端在下次连接的时候带上这个ticket,服务器用自己才知道的密钥将其解开,就知道了上次商定的密钥了。
第一种第二种的区别在于,第二种服务器段无需保存session的通讯密码,第二种方式是当前比较推荐的形式。
更多关于ssl session的可自行google,或者ref这篇文章
下面看看SSL配置的官方示例:
server {
listen 443 ssl;
keepalive_timeout 70;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/cert.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
}
是不是现在看这个配置就很清楚是干什么的了~
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于