jacky_chen的博客

导航

使用let's encrypt代替阿里云免费证书

  

    去年11月底开始着手使用https来代替http,提升安全性,同时也能避免网络运营商的广告。因为用的阿里云的全家桶(ECS+域名+CDN+OSS+直播等),正好看到阿里云上有免费的SSL证书,虽然有一年的期限,但想着先上了再说,一年之后,也许就全免费了呢。这一年期间,使用阿里云的免费证书也是各种坑,首先不知道每个账户只有20个(去年这个时候是连说明都没有的,不留工单问,没人知道),就一个劲的申请,结果浪费了很多(好像是说审核关闭的,还是吊销的,也占用1个指标,我去)。

    今年9月份的时候,微信公众号端又要开发一些东西,就新搭了服务器,但是不想去折腾阿里云的免费SSL证书了。正好,let's的免费证书的工具也比去年有更新,很多浏览器都支持了,据说明年还支持泛域名,所以,就考虑用这个啦。至于其他的签发商更安全啊,更有名啊,更屌B啊,比如说加密算法之类更牛啊等,这些就不考虑了,反正let's的目前完全够用了,又不是天天有几百万的资金通过项目流动(流汗)。至于let's一次签发90天的问题,一个crontab就解决。

        1)安装let's(基于centos,其他系统大同小异)

yum install epel-release
cd /data/certificate
wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n


            说明,./certbot-auto -n只是用来安装依赖包的,也可以跳过直接到下面的生成证书的步骤,国内VPS或服务器上使用的话建议先修改为国内的pip源。

        2)生成证书
            首先要将相应的域名,解析到服务器。(如本例中的www.chen.net)
            单域名生成证书:

./certbot-auto certonly --email email@email.com --agree-tos --no-eff-email --webroot -w /data/web/www -d www.chen.net

            多域名单目录生成单证书:(即一个网站多个域名使用同一个证书)

./certbot-auto certonly --email email@email.com --agree-tos --no-eff-email --webroot -w /data/web/www -d www.chen.net -d help.chen.net

            多域名多目录生成一个证书:(即一次生成多个域名的一个证书)

./certbot-auto certonly --email email@email.com --agree-tos --no-eff-email --webroot -w /data/web/www -d www.chen.net -d help.chen.net -w /data/wwwroot/web -d www.chen.cn -d chen.cn

        3)结果

        IMPORTANT NOTES:
        - Congratulations! Your certificate and chain have been saved at
        /etc/letsencrypt/live/www.chen.net/fullchain.pem. Your cert will
        expire on 2018-02-15. To obtain a new or tweaked version of this
        certificate in the future, simply run certbot-auto again. To
        non-interactively renew *all* of your certificates, run
        "certbot-auto renew"
        - If you like Certbot, please consider supporting our work by:

        Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
        Donating to EFF: https://eff.org/donate-le

        就是生成成功。

    4)配置nginx
  
  注意图中红色部分,请使用 fullchain.pem(不是chain.epm),替换掉原来阿里云下载的pem,否则的话,在安卓端,会出现打开空白的问题。

 5)配置crontab
  * * * */1 * /data/certificate/certbot-auto renew --disable-hook-validation

 6)在阿里云上,OSS和CDN的配置上,选择直接输入证书内容替换原来直接选择的阿里云证书,就可以了。

 

  注意事项:

  1、因为默认环境是不允许访问以"."开头的隐藏文件及目录的,所以访问http://abc.com/.well-known/acme-challenge/**** 这个链接的话返回403错误,所以必须要将对应虚拟主机配置文件里的
  location ~ /\.
  {
    deny all;
  }
  这段配置删掉或注释掉或在这段配置前面加上
  location ~ /.well-known {
    allow all;
  }

  以上配置代码,然后重启nginx。

 

posted on 2017-11-16 15:49  jacky_chen  阅读(7340)  评论(0编辑  收藏  举报