以前用过CloudFlare免费SSL证书来实现这个网站的https访问,不过CloudFlare是利用dns解析,把浏览器和服务器之间的数据通过中间服务器加密来实现,速度很慢而且只能使用固定的dns,所以不久我就把这个功能关掉了。最近偶然发现了一家可以提供免费SSL证书的机构Let’s Encrypt
简单了解了一下,Let’s Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS,目前Facebook等大公司开始加入赞助行列。目前Let’s Encrypt的证书已经被Mozilla、Google、Microsoft和Apple等主流的浏览器所信任,所以使用起来完全没有问题。证书的申请也很简单,官方有一套自动化的脚本(https://github.com/certbot/certbot)可以完成所有工作
首先把脚本clone到本地
1 2 3 |
git clone https://github.com/certbot/certbot cd certbot chmod +x ./certbot-auto |
生成证书(注意,生成证书时,需要临时关闭nginx服务)
1 |
./certbot-auto certonly --standalone --email thejinchao@gmail.com -d thecodeway.com -d www.thecodeway.com |
生成的证书放在/etc/letsencrypt/live/目录下,可以通过tree命令查看
1 |
tree /etc/letsencrypt/live/ |
在nginx的配置文件中加入ssl服务器定义
1 2 3 4 5 6 7 8 9 10 |
server { listen 443; server_name www.thecodeway.com thecodeway.com; #... ssl on; ssl_certificate /etc/letsencrypt/live/thecodeway.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/thecodeway.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #... } |
再把原先的http部分重定向到https
1 2 3 4 5 |
server { listen 80; server_name www.thecodeway.com thecodeway.com; return 301 https://$server_name$request_uri; } |
重新启动服务器之后,即可看到所有链接已经变成绿色的https链接了。需要注意的是,Let’s Encrypt的证书的有效期只有三个月,所以需要设置一个定时任务,定期更新证书
1 |
./certbot-auto renew --standalone --pre-hook "service nginx stop" --post-hook "service nginx start" --force-renewal |
另外推荐一个检测网站ssl链接安全性的网站:https://www.ssllabs.com/ssltest/index.html
3 thoughts on “完全使用HTTPS了”