今天根据小众软件上的《在 Nginx 上使用 Let’s Encrypt 加密(HTTPS)你的网站[简明教程]》一文为本站做了 SSL 的加密。
其实,在 DigitalOcean 的社区教程《How To Secure Nginx with Let’s Encrypt on Ubuntu 14.04》出来后我已经尝试为本站做 SSL 加密,但当时是死活不能通过域名的验证而作罢。
今天终于把不能通过域名验证的问题解决,并修改上述两篇教程的 nginx conf 使 SSL Server Test 能拿个 A 。
一、解决域名验证不通过问题
当时域名验证不能通过的信息如下:
INFO:letsencrypt.reporter:Reporting to user: The following 'urn:acme:error:connection' errors were reported by the server:
Domains: vps123.info, www.vps123.info
Error: The server could not connect to the client to verify the domain
解决的方法很简单,就是不要用 DNSPOD 做域名的 DNS 解析。将本站域名的 DNS 改为域名注册商的 NameServer 后,刷刷就通过域名验证了。
二、SSL Server Test 拿个 A
按教程对 nginx 进行配置后,拿网站到 SSL Labs 上做个 SSL Server Test 竟然只能拿个 B,心里有点不爽。
他们也照顾到你那不爽的心情,给了一个小指南,简单做个配置,马上将 B 提升到 A 。
1. 现在 VPS 上新生产一个 Diffie-Hellman group。生产这个比较耗时间,我这里大概用了 10 分钟。
openssl dhparam -out dhparams.pem 2048
2. 教材里的 nginx 配置有这一句
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
将这句修改为
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
3. 然后在刚才那句的下面新增一句
ssl_dhparam /dir/to/dhparams.pem;
ps:/dir/to/dhparams.pem 应修改为你生产的 dhparams.pem 的确实地址
4. 重新载入 nginx 配置文件
sudo nginx -s reload
好吧,到这里重新做 SSL Server Test 应该就会有个 A 了。