Nginx 配置 SSL 实现 HTTPS 连接
配好了镜像,还想尝试一下玩一下SSL。
现在(2015-08)国内有 WoSign 可以提供免费的SSL证书(https://buy.wosign.com/free/)
国外的话 Cloudflare(以下简称CF) 也不用介绍了,如果使用FlexSSL,不用在服务器上重新设置(https://www.cloudflare.com/)
不过 目标是直连服务器也能加密的Valid SSL Certificate,也就是CF中的Strict,也就是说从服务器到CF服务器到Client都是SSL加密的。
Cloudflare SSL三种方式:
OK,开工。
首先在WoSign注册
填好域(多个换行输入)名输入验证码,第一次使用的话,会顺带注册账号信息
验证域名
系统自动挑选邮箱,可以使用邮件认证。也可以使用往根目录下存放文件的形式。
选择生成方式
这里有两种选择,可以自己生成证书然后上传CSR文件签名,也可以全部交给WoSign。
如果是在线生成
比较方便 直接生成完,就可以下载压缩包,压缩包解压密码就是在网站填写的密钥;如果选择上传
1
2openssl genrsa -out privkey.key 2048
openssl req -new -key privkey.pem -out cert.csr然后cat出cert.scr填入上传即可。
下到zip文件解压,里面有提供给不同服务端用的证书,这里我们选择For Nginx,上传至服务器
服务器端解压,存放于安全目录下
配置Nginx
打开443的Server,填入server_name
指定好crt、key文件路径,这里为什么是.unsecure文件,下面会讲到。
禁用SSLv3,添加下行:
1 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
完整配置参考:
1 | server { |
关于SSL安全性的问题,参考:
- http://netsecurity.51cto.com/art/201408/447473.htm
- http://www.oschina.net/translate/strong_ssl_security_on_nginx
其实到这里已经配置好了,可以重启Nginx
1 | /opt/nginx-1.7.8/sbin/nginx -s reload |
每次启动要输入密钥,为了避免麻烦,使用OpenSSL工具去掉密码
1 | openssl rsa -in 2_example.com.key -out 2_example.com.key.unsecure |
OK,修改下Nginx配置里的文件路径吧
重启Nginx,测试
https://sslanalyzer.comodoca.com/
从这个网站可以看到SSL应用情况。
直连:
CloudFlare Strict: