Certbot实现 HTTPS 自动续期

2023-12-13 10:30

本文主要是介绍Certbot实现 HTTPS 自动续期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Certbot实现 HTTPS 自动续期

以前阿里云支持申请一年的免费https证书,那每年我们手动更新证书并没什么大问题,但现在阿里云的免费证书仅支持3个月,这意味着每三个月都要要申请一下证书显得非常麻烦。

下面我们使用Certbot实现ssl证书的自动更新,这次我在Centos8的Nginx上进行演示如何配置SSL证书。

Certbot的安装

要使用Certbot,首先需要安装:

yum install epel-release -y
yum install certbot -y

如果你安装过程中出现 “Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8” 的错误,是由于缺少 EPEL 存储库的 GPG 密钥导致的。这个密钥用于验证从 EPEL 存储库下载的软件包的完整性和真实性。

需要先导入 EPEL 存储库的 GPG 密钥:

rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8

然后重新安装上述安装命令即可安装成功。

生成 Let’s Encrypt 免费证书的命令参数

Let’s Encrypt 是免费 HTTPS 证书生成工具之一,由 Internet Security Research Group(ISRG)这个非营利组织提供ISRG的使命是使全球范围内的网站能够安全、自动化地使用HTTPS加密,并提供免费的 SSL/TLS 证书。

虽然 Let’s Encrypt 证书的有效期只有90天,但是可以自动续期。

使用 Certbot 工具生成 Let’s Encrypt 证书的手动验证命令:

certbot certonly --email example@qq.com --agree-tos -d ai.xxxxxx.top --manual --preferred-challenges dns

参数说明:

  • certonly: 用于生成 SSL/TLS 证书的工具插件。
  • --email example@qq.com: Let’s Encrypt 要求提供有效的电子邮件地址
  • --agree-tos:同意 Let’s Encrypt 的服务条款。
  • -d 'test.com':指定您想要为其生成 SSL 证书的域名。你可以通过添加多个 -d 选项来同时为多个域名生成证书。
  • --manual:在命令提示符下手动操作来验证您拥有该域名。
  • --preferred-challenges=dns:使用 DNS 验证方式进行证书颁发,需要将一个特定的 TXT 记录添加到 DNS 进行验证。

生成 Let’s Encrypt 证书的http验证命令:

certbot certonly --email example@qq.com --webroot -w /home/letsencrypt --preferred-challenges http-01 -d example.com

--preferred-challenges http-01:使用HTTP 验证方式生成证书。

--webroot -w /home/letsencrypt:用http做域名验证时,在目录/home/letsencrypt目录下产生对应的验证文件xxxx。

certbot通过访问http://example.com/.well-known/acme-challenge/xxxx便能完成验证。

通过DNS验证生成SSL证书

首先执行以下命令:

certbot certonly --email 604049322@qq.com --agree-tos -d ai.xxx.top --manual --preferred-challenges dns

首先会提示:We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.

我先输入Y回车同意(也可以输入N拒绝他们给你发邮件),然后出现如下提示:

image-20231212115626549

注意提示中的内容,下面我们在阿里云添加对应解析:

image-20231212115727526

阿里云中配置完成后,回到控制台回车确认,等待十秒钟后,提示Successfully received certificate.表示证书已经生成。

证书存储信息如下:

Certificate is saved at: /etc/letsencrypt/live/ai.xxx.top/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/ai.xxx.top/privkey.pem

此时修改Nginx的配置给需要使用https的server指定ssl证书:

ssl_certificate      /etc/letsencrypt/live/ai.xxx.top/fullchain.pem;
ssl_certificate_key  /etc/letsencrypt/live/ai.xxx.top/privkey.pem;

重启Nginx:

service nginx restart

可以使用以下网站测试目标网站的ssl:https://www.ssllabs.com/ssltest/

注意:使用DNS验证可以很方便的手动生成SSL证书,但是每次续期的时候要求填写的TXT记录都有可能不同,这意味着基于DNS验证的自动续期必须动态修改DNS的TXT记录。

虽然certbot 提供了一个 hook,可以在续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,但操作毕竟是复杂了很多,所以我们考虑使用j基于HTTP验证来自动续期生成SSL证书。

通过http验证生成SSL证书

certbot需要通过访问域名对应的地址完成验证,例如http://www.xxx.cn/.well-known/acme-challenge/abcd,如果访问无法访问,则需要给Nginx配置该路径可以访问,从而完成验证。

执行以下命令修改配置(根据配置文件实际位置修改):

vi /usr/local/nginx/conf/vhost/proj.conf

注意:一般yum安装的Nginx执行vi /etc/nginx/conf.d/proj.conf

添加如下配置:

server {listen 80;server_name www.rzyundemo.cn;location ^~  /.well-known/acme-challenge/ {allow all;root  /data/pro/ydz/web;}return 301 https://$server_name$request_uri; #http跳转为https
}

然后使用service nginx reload命令重载配置。

然后通过http验证生成证书:

certbot certonly --email 604049322@qq.com --webroot -w /data/pro/ydz/web --preferred-challenges http-01 -d www.xxx.cn

然后可以看到ssl生成成功的提示Successfully received certificate.

然后给对应的443端口补充ssl配置:

server {listen       443 ssl;server_name  www.xxxxxx.cn;ssl_certificate      /etc/letsencrypt/live//www.xxxxxx.cn/fullchain.pem;ssl_certificate_key  /etc/letsencrypt/live//www.xxxxxx.cn/privkey.pem;location / {root    /data/pro/ydz/web;index  index.html index.htm;error_page  404	http://www.xxxxxx.cn;}
}

自动更新证书

使用以下命令即可更新证书:

 certbot renew

但有效期超过一个月的会自动跳过。

我们将该命令配置为crontab定时任务即可实现自动续签:

首先执行crontab -e,然后添加以下配置:

0 0 * * 1 /usr/bin/certbot renew >> /var/log/certbot-renew.log

crontab从左至右分别是:分钟、小时、日期、月份、星期几,以上配置代表每周一执行一次证书更新。

这篇关于Certbot实现 HTTPS 自动续期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488119

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机