使用Let's Encrypt让网站支持HTTPS

Let’s Encrypt 是一个新的 CA,他能够提供一种非常容易的方式来获取和安装免费的 TLS/SSL 证书,从而在 web 服务器上启用 HTTPS 加密。并且是免费的。
本篇文章将以我的域名:www.wenchao.ren为例子,我的博客地址部署在:/var/www/html/wenchao.ren/public_html下面

安装Let’s Encrypt

    sudo apt-get install letsencrypt

生成证书

letsencrypt certonly --webroot -w /var/www/html/wenchao.ren/public_html -d wenchao.ren -d www.wenchao.ren

配置nginx

注释掉http的监听,也就是注释掉下面的代码:

    #listen 80 default_server;
    #listen [::]:80 default_server;

增加下面的代码:

      listen 443 ssl default_server;
      listen [::]:443 ssl default_server;
      ssl_certificate /etc/letsencrypt/live/wenchao.ren/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/wenchao.ren/privkey.pem;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers on;
      ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

配置http跳转到https

在默认的serer配置之前增加下面的配置

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

然后重启nginx:

sudo service nginx restart

完成以后的效果可以参见本文章的浏览器地址栏

配置证书自动续期

测试证书续期的命令为:

 sudo letsencrypt renew --dry-run --agree-tos

Let’s Encrypt 每次只有 90 天有效期,但可以通过脚本进行更新, 在crontab中增加下面的配置:

MAILTO=me@wenchao.ren
0 19 1 * * sudo letsencrypt renew  1>/dev/null && sudo service nginx restart

参考资料

本文版权归作者所有,禁止一切形式的转载,复制等操作
赞赏

微信赞赏支付宝赞赏

3 replies to 使用Let's Encrypt让网站支持HTTPS

  1. 谢了

    • 不客气

  2. 感谢!
    P.S. crontab 脚本里是否也用 –dry-run –agree-tos 选项比较好?(否则会需要确认 TOS?)

发表评论

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