更换ssl证书为let‘s encrypt,并使用acme.sh定期自动更新ssl证书

https

关于let's encrypt和acme.sh的简介

Let’s Encrypt is a free, automated, and open Certificate Authority.

acme.sh 实现了 acme 协议, 可以从 let‘s encrypt 生成免费的证书.

安装,使用acme.sh

  • 安装命令
curl  https://get.acme.sh | sh  
  • 生成ssl证书

我使用的是webroot方式,具体还有其他的方法参考acme.sh的github

acme.sh  --issue -d blog.lomot.cn  --webroot  /home/wwwroot/blog.lomot.cn/  
  • copy证书
acme.sh  --installcert  -d  blog.lomot.cn   \  
        --key-file   /etc/nginx/ssl/blog.lomot.cn.key \
        --fullchain-file /etc/nginx/ssl/blog.lomot.cn.cer \
        --reloadcmd  "service nginx force-reload"
  • 应用证书

这里只给出nginx的方法:

例如网址是blog.lomot.cn 在/etc/nginx/nginx.conf 中添加如下

    server {
        listen 80;
        server_name blog.lomot.cn;
        rewrite ^(.*)$  https://$host$1 permanent;

        #location / {
        #    proxy_set_header   X-Real-IP $remote_addr;
        #    proxy_set_header   Host      $http_host;
        #    proxy_pass         http://www.lomot.cn;
        #    proxy_set_header REMOTE-HOST $remote_addr;
        #    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #}
    }

    server {
        listen 443;
        server_name blog.lomot.cn;
        #rewrite ^(.*)$  http://www.lomot.cn permanent;

        ssl on;
        ssl_certificate  /etc/nginx/ssl/blog.lomot.cn.cer;
        ssl_certificate_key /etc/nginx/ssl/blog.lomot.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        location / {
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   Host      $http_host;
            proxy_pass         http://45.32.10.206;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

证书自动更新

目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.

更新acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

升级 acme.sh 到最新版 :

acme.sh --upgrade 如果你不想手动升级, 可以开启自动升级:

acme.sh --upgrade --auto-upgrade 之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

引用

具体教程可以参考acme.sh的github https://github.com/Neilpang/acme.sh

lomot

继续阅读此作者的更多文章