关于IT运维技术的
最佳实践博客网站

网站开启https避免ISP劫持,certbot是个不错的选择

关于为什么要使用https:

google-https

1、下载安装certbot

git clone https://github.com/certbot/certbot.git
cd certbot
ln -s /root/certbot/certbot-auto /usr/bin/certbot-auto

2、执行证书自动化生成命令

传统CA的验证方式一般是往「域名管理员邮箱」发验证邮件,而Let’s Encrypt是在你的服务器上生成一个随机验证文件,再通过创建CSR时指定的域名访问,如果可以访问则表明你对这个域名有控制权。

有两种情况:

1、域名解析出来的IP在cerbot所在机器上的情况,这一切都是自动化的。

ertbot-auto certonly --standalone --email admin@cnhzz.com --agree-tos -d cnhzz.com -d www.cnhzz.com

2、如果域名解析出来的IP不在cerbot所在机器上的情况,需要手动加配置去访问验证。

运行命令

certbot-auto certonly --manual --debug -d anycto.com -d www.anycto.com --email admin@anycto.com

去域名解析出来的服务器上,设置nginx的location验证域名所有权

location ^~ /.well-known/acme-challenge/04tSsl2POR9FAKicBm5qzsPcSSXbMcvUiWFzRqAfFi8
{
    return 200 '04tSsl2POR9FAKicBm5qzsPcSSXbMcvUiWFzRqAfFi8.I73Br3F8Ak48kIKOnWuhBbBEE9evxw28jN3roCyhAKs';
    add_header Content-Type text/plain;
}

确认配置ok后, 按Enter开始验证. 成功后给出提示:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.example.com/fullchain.pem. Your cert
   will expire on 2016-10-16. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

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

3、查看生成的证书文件

存放的pem和key在 /etc/letsencrypt/live/ 下, 本身是软链接.

  1. cert.pem 用户证书
  2. chain.pem 中间证书
  3. fullchain.pem 证书链, chain.pem + cert.pem
  4. privkey.pem 证书私钥
[root@aliyun ~]# tree /etc/letsencrypt/live/
/etc/letsencrypt/live/
└── cnhzz.com
    ├── cert.pem -> ../../archive/cnhzz.com/cert1.pem
    ├── chain.pem -> ../../archive/cnhzz.com/chain1.pem
    ├── fullchain.pem -> ../../archive/cnhzz.com/fullchain1.pem
    └── privkey.pem -> ../../archive/cnhzz.com/privkey1.pem

1 directory, 4 files

4、在nginx中使用certbot生成的证书

依据配置https的配置的路径,创建 privkey.pem和fullchain.pem 软链接即可。

ln -s /etc/letsencrypt/live/cnhzz.com/fullchain.pem /usr/local/nginx/conf/ssl/www.cnhzz.com.crt
ln -s /etc/letsencrypt/live/cnhzz.com/privkey.pem /usr/local/nginx/conf/ssl/www.cnhzz.com.key

5、更新certbot生成的证书

certbot签发的证书只有 90 天有效期,但可以通过crontab脚本定期更新。

测试更新所有域名的证书:

certbot-auto renew --dry-run

如果还没到期会自动跳过:

[root@aliyun ~]# certbot-auto renew

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/cnhzz.com.conf
-------------------------------------------------------------------------------

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/cnhzz.com/fullchain.pem (skipped)
No renewals were attempted.

如果想针对某个域名进行更新,参数:–keep-until-expiring

certbot-auto certonly --keep-until-expiring --webroot -w /data/wwwroot/www.cnhzz.com/ -d www.cnhzz.com -d cnhzz.com --email admin@cnhzz.com

如果还没到期会提示:Certificate not yet due for renewal; no action taken.

6、设置定时任务让certbot生成的证书到期后完美自动更新!

0 0 3 * * /usr/local/bin/certbot-auto renew --standalone --pre-hook "systemctl stop nginx.service" --post-hook "systemctl start nginx.service" >> >> /var/log/certbot 2>&1

7、这一切最基本的使用方法都熟悉后,我建议使用这个脚本:

脚本核心:调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。

https://github.com/xdtianyu/scripts/tree/master/lets-encrypt

参考:https://ksmx.me/letsencrypt-ssl-https

参考:https://wiki.tankywoo.com/tool/letsencrypt.html

赞(0)
未经允许不得转载:菜鸟HOW站长 » 网站开启https避免ISP劫持,certbot是个不错的选择
分享到: 更多 (0)

留下你的脚印

  订阅  
关注动态