通过Certbot自动申请更新HTTPS网站的SSL证书
现在很多云服务运营商免费的HTTPS证书有效期只有3个月,对于个人网站来说,这就很麻烦,现在可以用 Certbot + Crontab 自动申请并定期更新 HTTPS 网站的 SSL 证书,来解决我们这个痛点。
需要云服务器可以看这里:云服务器优惠合集。
1. 安装 Certbot
不同系统安装方式略有不同,这里给你 CentOS / RHEL 和 Debian / Ubuntu 的常用方法。
CentOS / RHEL 7/8/9
# 安装 EPEL
sudo yum install epel-release -y
# 安装 Certbot 和 Nginx 插件(如果用 Apache 就换成 python3-certbot-apache)
sudo yum install certbot python3-certbot-nginx -y
Debian / Ubuntu
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
2. 申请 SSL 证书
如果你用 Nginx:
sudo certbot --nginx -d example.com -d www.example.com
-d参数后面写你的域名(可以多个)- Certbot 会自动修改 Nginx 配置并申请证书
- 申请过程中会让你选择是否重定向 HTTP → HTTPS
注意:这里需要你的nginx的conf文件里面的sercer_name指定对应的域名,如果你配置的是下划线 "_",会导致该命令运行失败,报下面的错误。
Could not automatically find a matching server block for zhangfeidezhu.com. Set the `server_name` directive to use the Nginx installer.
如果你用 Apache:
sudo certbot --apache -d example.com -d www.example.com
3. 测试证书是否生效
申请完成后,可以在浏览器访问你的域名,查看是否已经是有效的 Let's Encrypt 证书。
4. 自动更新证书
Let's Encrypt 证书有效期是 90 天,所以要自动续签。
Certbot 自带定时任务(通常是 /etc/cron.d/certbot 或 systemd 定时器),也可以手动添加 crontab:
sudo crontab -e
加入:
0 3 1 */3 * certbot renew --quiet --post-hook "nginx -s reload"
解释:
0 3 1 */3 *→ 每隔 3 个月的1号3点执行一次--quiet→ 静默模式--post-hook "nginx -s reload"→ 续签后自动重载 Nginx
5. 检查自动续签是否正常
手动测试续签:
sudo certbot renew --dry-run
如果提示 Congratulations, all renewals succeeded,说明没问题。
这样配置后,你的网站 HTTPS 证书会在到期前自动续签,Nginx 会自动加载新证书,几乎可以做到“一劳永逸”。
通过Certbot自动申请更新HTTPS网站的SSL证书的更多相关文章
- 【http转https】其之二:申请Let's Encrypt颁发SSL证书
文:铁乐猫 2017年1月12日 申请Let's Encrypt颁发SSL证书 由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务, ISRG ...
- http跳转https方法:百度云如何让http自动跳转到https【免费SSL证书使用FAQ】
之前的一篇文章已经给大家提供了免费SSL证书的申请方法,这一篇文章是告诉大家在使用免费的SSL证书时可能会遇到的问题[怎么让http自动跳转到https以及http与https同时使用]的解决方法. ...
- 申请安装阿里云免费SSL证书
微信小程序已经全面要求使用HTTPS服务了,还有苹果商店也是,所以,实现网站HTTPS已经很有必要.要实现HTTPS就需要一个SSL证书,证书大部分都很贵,不过也有一些免费的证书服务供个人开发者使用. ...
- 网站安装SSL证书成为影响SEO排名的重要因素之一
百度谷歌先后发声明倡导站长们使用https链接,同样的网站,https站点要比http站点拥有更好的排名权重.https已经是网站SEO必须要考虑的环节之一了,而https的必要条件就是安装SSL证书 ...
- 如何给网站添加SSL证书(免费)
上篇讲了如何将网站部署到服务器上,这篇就讲如何给网站添加SSL证书. 1.先到腾讯云ssl证书认证那里申请一个证书 2.DNS认证 3.下载解压nginx里面的文件 4. 在服务器上/www目录下创建 ...
- Requests对HTTPS请求验证SSL证书
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发.该安全协议主 ...
- 各种HTTPS站点的SSL证书 ,扩展SSL证书,密钥交换和身份验证机制汇总
各种HTTPS站点的SSL证书 ,扩展SSL证书,密钥交换和身份验证机制汇总 一份常见的 HTTPS 站点使用的证书和数据加密技术列表,便于需要时比较参考,将持续加入新的 HTTP 站点,这里给出的信 ...
- requests发送HTTPS请求(处理SSL证书验证)
1.SSL是什么,为什么发送HTTPS请求时需要证书验证? 1.1 SSL:安全套接字层.是为了解决HTTP协议是明文,避免传输的数据被窃取,篡改,劫持等. 1.2 TSL:Transport Lay ...
- Nginx配置SSL证书部署HTTPS网站(颁发证书)
一.Http与Https的区别HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 ...
- selenium 对https网站(加密证书)进行自动化测试
由于公司需要,被测网站有证书加密,由于在selenium启动firefox的时候,它会重新建一个profile作为启动的profile,所以无论你怎么把站点设为可信任站点,在selenium启动的fi ...
随机推荐
- Java 提取url的域名
有时候,我们需要校验URL的域名是否在白名单中,故需要提取其中的域名.可以使用java标准类库java.net.URL进行提取,方法如下: import org.apache.commons.la ...
- 使用Redis命令select切换数据库
redis的数据库个数是可以配置的,默认为16个.对应数据库的索引值为0 - (databases -1),即16个数据库,索引值为0-15. 默认使用第0个数据库,可使用select进行数据 ...
- NSDictionary 内存布局
NSDictionary是iOS开发中经常用到的数据结构. 熟悉NSDictionary的内部实现,有助于我们更好的使用它们. 同时,在遇到相关崩溃,也能帮助我们更好的分析问题. 1 类簇 非可变字典 ...
- 洛谷 P5012 水の数列
洛谷 P5012 水の数列 Problem 给你一个长度为\(n(n\le10^6)\)的数列,有\(T(T\le 10^3)\)组询问,每一组询问查询区间\([l,r]\),请选择一个\(x\),将 ...
- Ubuntu二进制安装ElasticSearch7.17.x版本集群
概述 本文主要讲解如何二进制安装Linux二进制集群 环境信息 主机名 IP地址 系统 ELK01 10.0.0.40 Ubuntu22.04 ELK02 10.0.0.41 Ubuntu22.04 ...
- Go + WebSocket + Chrome Extension:基于真实浏览器环境的 cf_clearance 自动化获取方案
前言 随着 Web 安全防护技术的演进,Cloudflare 等 CDN 服务商部署的反爬虫机制愈发复杂.传统的 HTTP 客户端库已无法有效应对基于 JavaScript 执行的挑战验证,而 Sel ...
- GitHub MCP Server - 无缝集成GitHub API的自动化工具
GitHub MCP Server GitHub MCP Server是一个Model Context Protocol(MCP)服务器,提供与GitHub API的无缝集成,使开发者和工具能够实现高 ...
- 20250626 - SiloFinance 攻击事件: 恶意输入参数导致借款授权额度盗用
背景信息 SiloFinance 是一个借贷协议,用户可以进行抵押借贷,也可以授权其他用户使用其借贷额度.本次攻击的原因是 LeverageUsingSiloFlashloanWithGeneralS ...
- sql-一段连续日期的数据查询
后台sql实现如下图的数据支撑(图横坐标数据要求为今天的前一天往前一个月的,纵坐标为对应天的数据) select sum(total) total, to_char(dateL,'MM"月& ...
- C# lambda 去除重复GroupBy 查找最大记录一条数据
public class Student { public int ID { get; set; } public string Name { get; set; } public int Age { ...