zoukankan      html  css  js  c++  java
  • Let’s Encrypt 通配符证书如何续期

    https://www.jianshu.com/p/074e147b68b0

     

    更新脚本:

    https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au 

    前言

    从去年一直用Let’s Encrypt觉得还挺不错的,毕竟是免费的,用着也挺方便,不过当时不是通配符的,只能申请www开头域名,直到今年3月份后,Let’s Encrypt开放了通配符证书,所以搞事情的我又申请了通配符证书,并且写了一篇从http网站快捷免费升级到https的文章,欢迎过来点个小心心❥(^_-)

    但是通配符该如何升级呢?很多朋友现在使用了 *.yuming.com 却不能直接更新了,那么这篇文章就带大家来看看如何更新通配符证书。

    先来个小广告,君哥的Java零基础初级学习全套视频已经推出啦
    弟弟妹妹的可以看过来 https://hledu.ke.qq.com
    想做在线讲课的也可联系

    一、证书常规操作

    查看当前服务器所配置的证书
      -- 查看证书可执行文件位置
      find / -name certbot-auto
    
      -- 找到位置后执行该命令查看证书
      ./certbot-auto certificates
    

    输出证书状态如下,我这边有4个

     
    服务器上申请了4个证书
    直接更新证书

    如果你申请了通配符证书,直接按正常流程直接执行./certbot-auto renew更新,单域名的证书更新完成了,但通配符就蛋疼了,出现错误如下代码和图,这里我只贴出异常部分

    Attempting to renew cert (51object.com-0001) from /etc/letsencrypt/renewal/51object.com-0001.conf 
    produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
    
    The error was: PluginError('An authentication script must be provided with --manual-auth-hook
     when using the manual plugin non-interactively.',). Skipping.
    
     
    更新错误图-部分

    重点是:--manual-auth-hook,意思就是当我们自动使用插件的时候必须提供一个身份验证脚本,我们可以使用cerbot提供的--manual-auth-hook来进行证书的更新,因为要录入DNS记录,所以会失败(说到这里,是否还记得申请时需要走云服务器配置DNS记录的那一刻)

    根据这个解决思路:

    • 可以使用 certbot 插件,比如 certbot-dns-cloudflare 插件(还有其他的),就是自动更新 cloudflare 等 DNS 的记录。
    • 手动编写脚本,cerbot 官方提供了 cloudflare 的样例。

    这里呢我使用了Github上已有朋友编写的python脚本代码进行操作,其原理就是通过访问【阿里 or 腾讯】云接口生成DNS校验记录,大家先下载下来。
    在这里感谢他们的付出与贡献,开源推动了互联网的进步,你们是优秀的程序员
    代码地址如下:Let’s Encrypt 通配符证书如何续期代码

    注意:使用python的朋友只需要2个文件即可(sslupdate.sh和27|36.py)

    继续干,如何续期?

    如下两行命令是需要先将github文件下载下来,替换掉py文件中的ACCESS_KEY_IDACCESS_KEY_SECRET,首先需要开放云控制台中的accesskeys,如何开放可以去查阅其他资料,这里不做描述,

     
    此步骤一定要做,否则通过接口生成DNS
    命令如下
    
    1:对机器上所有证书 renew
    $ ./certbot-auto renew  --manual --preferred-challenges dns  --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
    
    2:对某一张证书进行续期
    $ ./certbot-auto renew --cert-name 51object.com-0001  --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh
    

    小叉子,没问题的可以跳过这段
    我CentOS上的python版本为自带的2.7.5,运行python脚本时,提示出错:No module named pytz.tzinfo

     
    pytz模块没有

    所以需要安装pytz模块才能接着做,pytz.whl模块下载地址

    [root@iz2zeip7gvbiukof8kwdapz python]# pip install wheel
    
    [root@iz2zeip7gvbiukof8kwdapz script]# pip install pytz-2018.5-py2.py3-none-any.whl
    
    

    安装完成后执行sh文件,这次成功更新,执行的命令如下:

    -- 检验过程是否无异常,成功后并不会生效(测试命令)
    ./certbot-auto renew --cert-name 51object.com-0001  --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh --dry-run
    
    -- 正式更新,此操作生效
    ./certbot-auto renew --cert-name 51object.com-0001  --manual-auth-hook /usr/local/ssltpfupdate/sslupdate.sh 
    
    

    下图为测试命令执行

     
    注意,此图为测试命令执行结果

    正式更新命令我就不贴图了,和测试的输出基本一致,祝你好运啦。。。。

    更新完成之后你会发现阿里云上多了一条TXT记录,就是py代码中通过接口新增的

     
    新增的TXT记录
     
    再次查看记录

    本次更新操作到此结束,接下来我们可以加入到定时任务中

    加入 crontab
    编辑文件 /etc/crontab :
    
    1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns  --manual-auth-hook /脚本目录/sslupdate.sh 
    
     
     
    7人点赞
     
     


    作者:君哥聊编程
    链接:https://www.jianshu.com/p/074e147b68b0
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    颜色空间
    C++ lambda表达式
    nVidia的物理系统
    UE3客户端服务器GamePlay框架
    UE3中Object和Actor的创建与销毁
    git-lfs插件
    【SpringCloud】Spring Cloud Alibaba 之 Sentinel 持久化规则(三十五)
    【SpringCloud】Spring Cloud Alibaba 之 Sentinel 与OpenFeign整合(三十四)
    【SpringCloud】Spring Cloud Alibaba 之 Sentinel @SentinelResource使用(三十三)
    【SpringCloud】Spring Cloud Alibaba 之 Sentinel热点参数限流与系统自适应限流(三十二)
  • 原文地址:https://www.cnblogs.com/wangmo/p/13577502.html
Copyright © 2011-2022 走看看