• 来此加密证书申请,验证,自动部署


    之前用certbot, 后来一直不报错, 证书不管用, 就想着干脆直接使用来此加密, 不要中间商了, 就有了直接到来此加密注册之旅

    注册地址:

    来此加密https://letsencrypt.osfipin.com/user-0408/order/list附上这两年的"战绩"

    申请这么多证书主要原因是, 测试域名太多, 一些用了之后又不要了, 还有一些测试域名的证书

    话不多说, 直接申请证书

    1, 点击申请证书

    2,输入需要申请证书的域名,如果需要泛域名,或者包含根域名, 自行选中

     3,选择加密方式,我一般就下一步了

     4,选择渠道和是否需要独立通道, 独立通道的作用可以去看看文档, 总的来说就是可以同时处理多个证书的申请&验证, 然后验证和创建的速度要快些, 备注我都没怎么在意

     5,提交, 等证书创建成功

     

    因为我的这个测试域名已经创建成功了的, 只能另起一个域名作为演示: a.sinclair.world

     6,选择验证方式

            http验证:

            

    如果已经指了域名, 就可以用http,在域名服务器的目录下面创建文件夹 mkdir -p ./.well-known/acme-challenge/

    点击"立即下载",把文件放到新建的文件夹里面, 就可以直接点击验证本条了, 需要注意的是服务器的配置不要把http直接跳转https了, 不然要报错

            DNS验证:

    需要注意上面说的是TXT  还是CNAME, 按照指定的规则添加DNS规则, 然后再进行验证

    下面附上一些失败记录,HTTP的失败是因为没关闭http跳转https, DNS就是没看清楚到底是TXT解析还是CNAME解析...自己的锅自己背......

     

     7,我用的nginx 就参考了文档里面的nginx配置

    1. server
    2. {
    3. listen 80;
    4. listen 443 ssl http2;
    5. ssl_certificate path\fullchain.crt;
    6. ssl_certificate_key path\private.pem;
    7. ssl_session_timeout 1d;
    8. ssl_session_cache shared:MozSSL:10m;
    9. ssl_session_tickets off;
    10. ssl_protocols TLSv1.2 TLSv1.3;
    11. ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    12. ssl_prefer_server_ciphers off;
    13. # 开启OCSP stapling
    14. ssl_stapling on;
    15. ssl_stapling_verify on;
    16. }

     只需要把fullchain.crt和private.pem放在指定的文件夹, 配置好了就重启nginx

    8,通过shell脚本自动部署

            8.1变更验证类型

             8.2根据API接口里面的步骤进行

            首先创建一个key,然后点击查看进入文档

     

             看到了手册 案例:linux下自动下载和部署 · 语雀根据接口文档,可以编写满足需求的bash文件,实现自动...https://www.yuque.com/osfipin/letsencrypt/makzkw

     我用了这个案例里面的例子

    附上我的脚本:

     

    1. #!/usr/bin/env bash
    2. export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    3. # 参数配置 开始
    4. ORDER_ID='2x83ml'#上图的自动验证ID
    5. TYPE='auto'#自动重申&自动验证的话,这里需要是auto
    6. API_TOKEN='xxxxxx'##刚刚申请的key
    7. API_USER='XXX@163.com'#我的用户名
    8. FILE_CERT_DIR='/etc/nginx/cert'
    9. FILE_CERT=${FILE_CERT_DIR}'/fullchain.crt'
    10. FILE_CERT_KEY=${FILE_CERT_DIR}'/private.pem'
    11. COMAND_RELOAD='nginx -s reload'
    12. # 参数配置 结束
    13. # 以下内容根据需求修改
    14. # 证书到期前13天内才会更新
    15. isexpire=`openssl x509 -in ${FILE_CERT} -noout -enddate -checkend 91123200`
    16. if echo "${isexpire}" | grep " not " ; then
    17. #echo "Certificate will not expire."
    18. exit 1
    19. fi
    20. API_URL='https://api.osfipin.com/letsencrypt/api'
    21. URL_ORDER_DOWN="${API_URL}/order/down"
    22. HEADER_AUTHOR="Authorization: Bearer ${API_TOKEN}:${API_USER}"
    23. ZIP_FILE="${ORDER_ID}.$RANDOM"
    24. curl ${URL_ORDER_DOWN} -H "${HEADER_AUTHOR}" -G -d "id=${ORDER_ID}" -d "type=${TYPE}" -o ${ZIP_FILE}.zip
    25. if [ ! -s "${ZIP_FILE}.zip" ]; then
    26. echo "download error."
    27. exit 1
    28. fi
    29. size=`du -b ${ZIP_FILE}.zip | awk '{print $1}'`
    30. if [[ ${size} -lt 500 ]]; then
    31. echo "download file error."
    32. cat ${ZIP_FILE}.zip
    33. unlink ${ZIP_FILE}.zip
    34. exit 1
    35. fi
    36. # 解压 移动文件
    37. mkdir -p ${ZIP_FILE}
    38. mkdir -p ${FILE_CERT_DIR}
    39. unzip ${ZIP_FILE}.zip -d ${ZIP_FILE}
    40. cp ${ZIP_FILE}/fullchain.crt ${FILE_CERT}
    41. cp ${ZIP_FILE}/private.pem ${FILE_CERT_KEY}
    42. # 删除 打完收工
    43. unlink ${ZIP_FILE}.zip
    44. rm -rf ${ZIP_FILE}
    45. ##`${COMAND_RELOAD}`

    脚本在root用户下运行

    在crontab里面添加定时任务, 我是周二周五运行一下

    30 8 * * 2,5 bash /root/backup/updateHttps.sh

    至此, 从申请证书, 到验证, 到配置, 再到自动部署, 大致的步骤就完了, 官方文档很详细了, 需要注意的是:

    •         http验证的时候, 文件夹权限要注意, http不要直接跳转https, 证书配置好了再说哈
    •         DNS验证的时候, 需要注意是TXT解析还是CNAME解析
    •         自动部署的时候, 过期时间需要改一下

    免费的证书, 爱了吗, 不过建议加入VIP, 买点独立通道, 真的很方便!

    附上推荐码,可自取: 2DOV0NRJ

    记录完毕, 收工

  • 相关阅读:
    【PAT甲级 - C++题解】1048 Find Coins
    三、图片的几何变换
    Spring Cloud Zookeeper 升级为Spring Cloud Kubernetes
    tomcat优化(生产环境) 加多实例部署
    Python 中泛型的实现
    计算机毕业论文java毕业设计选题源代码基于SSM的会议室预约系统
    门级建模—学习笔记
    java毕业设计在线宠物用品交易网站Mybatis+系统+数据库+调试部署
    Unable to correct problems, you have held broken packages
    027—pandas 不同分类每天指定取值的比例
  • 原文地址:https://blog.csdn.net/brazor/article/details/126407584