美文网首页
certbot简单使用

certbot简单使用

作者: 续断blog | 来源:发表于2023-01-03 11:55 被阅读0次

    ssl一直用的是阿里的免费证书,但是每年需要定时更换证书,而且数量上也有限制,这就很烦,我这么懒,别说一年一换,就是两年一换证书我都懒得打开后台~

    科普

    为了加快推广 https 的普及, EEF 电子前哨基金会、 Mozilla 基金会和美国密歇根大学成立了一个公益组织叫 ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了 Let’s Encrypt 免费证书。后来 ISRG 的发起者 EFF (电子前哨基金会)为 Let’s Encrypt 项目发布了一个官方的客户端 Certbot ,利用它可以完全自动化的获取、部署和更新安全证书

    常用命令

    certbot renew -q // 续签(-q, –quiet 程序运行只输出错误信息)
    certbot certificates // 查看证书
    openssl x509 -in [公钥xx.pem] -noout -dates  // 检测过期时间
    openssl s_client -connect xxx.com:443  // 检查域名端口配置情况
    

    安装

    centOS

    yum update
    yum install certbot
    

    debian/deepin/ubuntu

    apt update
    apt install certbot -y
    

    生成证书

    certbot certonly
    

    有两个选项:
    选项1,适用于还没有搭建服务器的情况,因为默认采用80端口,如果有其他程序占用了,如nginx,需要先关闭。
    选项2,适用已搭建服务器的情况,可以根据网站目录验证后生成,不占用端口,因为已有服务在运行,我直接选择了2

    第一次使用,会提示输入邮箱: xxx@xx.com
    输入域名,这里我是二级域名: xx.xxx.com,
    然后输入网站的绝对路径: /home/wwwroot/xxx
    当然,我建议直接一步到位:

    certbot certonly --webroot -w /home/wwwroot/xxx -d xxx.com
    

    注意:
    使用生成证书的命令是有接口限制的,因此不建议频繁调用,如果报错了先排查出问题再继续,可以在末尾加上--dry-run用于获取测试证书排查问题,没有报错后再去掉它获取正式证书

    certbot certonly --webroot -w /home/wwwroot/xxx -d xxx.com --dry-run
    

    证书地址:

        /etc/letsencrypt/live/xxx.com/fullchain.pem;
        /etc/letsencrypt/live/xxx.com/privkey.pem;
    

    配置nginx

    server {
        # 某个版本前的老版本可以用ssl on,我的是 nginx/1.16.1,用listen
        listen 443 ssl;
        ...
        ssl_certificate    /etc/letsencrypt/live/xxx.com/fullchain.pem;
        ssl_certificate_key    /etc/letsencrypt/live/xxx.com/privkey.pem;
    }
    

    证书续期

    certbot默认注册的证书,有效期是90天, 需要定期更新证书

    手动续期

    在到期前30天之内才能续期,否则certbot会判断没有必要进行续期

    certbot renew
    

    自动续期

    脚本

    脚本按实际情况自定义,不需要完全按照我的来

    touch auto_update_ssl.sh
    vim auto_update_ssl.sh
    
        #!/bin/bash
    
        # 关闭nginx
        nginx -s quit
    
        # 证书更新完毕后,将关闭的nginx启动
        certbot renew --renew-hook "nginx" > /root/shell/log/auto_update_ssl.log 2>&1 &
    

    计划任务

    这里我设置每月执行一次续期
    crontab -e

    0 0 1 * * /root/shell/auto_update_ssl.sh
    

    问题

    安装使用过程并不是一帆风顺的,这里枚举下安装使用过程中的一些问题

    # urllib3问题********
    python ImportError: cannot import name UnrewindableBodyError
    =>
    pip uninstall urllib3
    sudo pip install --upgrade urllib3
    
    # pyOpenSSL问题********
    ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
    =>
    yum install http://cbs.centos.org/kojifiles/packages/pyOpenSSL/16.2.0/3.el7/noarch/python2-pyOpenSSL-16.2.0-3.el7.noarch.rpm
    
    # 缺少文件********
    http://xxx.com/.well-known/acme-challenge/OMxmbVthqV6XEcG5lG8jCvxa5k2A7ELowLFWZzOaatA:404
    => 创建名为[OMxmbVthqV6XEcG5lG8jCvxa5k2A7ELowLFWZzOaatA]的文件复制到相应路径即可
    

    参考链接

    certbot文档:https://www.wangan.com/docs/1245
    参考安装使用部分:https://blog.csdn.net/qq_42760638/article/details/117962788
    参考certbot科普部分:https://zhuanlan.zhihu.com/p/25538921

    相关文章

      网友评论

          本文标题:certbot简单使用

          本文链接:https://www.haomeiwen.com/subject/kgclcdtx.html