《在 Nginx 上使用 Let’s Encrypt 加密(HTTPS)你的网站[简明教程]》补遗

letsencrypt-nginx-ssl-server-test-a

今天根据小众软件上的《在 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 了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注