惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
博客园 - 司徒正美
博客园 - 叶小钗
T
Tailwind CSS Blog
博客园 - Franky
V
V2EX
有赞技术团队
有赞技术团队
美团技术团队
雷峰网
雷峰网
爱范儿
爱范儿
Jina AI
Jina AI
D
DataBreaches.Net
H
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell

LanYunのBlog

优化macOS Dock栏的显示与隐藏 解决macOS全屏模式下某些情况显示原始鼠标指针的问题 Yarn从Classic迁移到Modern nginx自编译 用santa对二进制进行监控和授权 ESXI 8.0安装黑群晖DSM 7.x openwrt编译过程记录 编译monero For macOS ARM 自建busuanzi不蒜子平台统计平台 浅记博客更新日志 (机翻)Kubo配置文件 修改brew services中服务的启动参数 技术杂记📝 解决Surge模块不能同步问题 为Arch Linux配置邮件服务 自编译NutClient-ESXI,更改邮件逻辑 解决ESXI和群晖使用SSH密钥登录问题 为J4125软路由ESXI中群晖提供UPS服务 在arch linux上搭建rustdesk server 解决虚拟机扩容中GPT PMBR大小不符问题 搭建Tuic V5 优雅地为macOS提供python多版本的支持 修复root路径下文件权限问题 解决macOS 14上利用Whisky运行steam时有关问题 在macOS中用PhpStorm配置Xdebug调试 利用CloudFlare Workers快速自建一个IP获取器 从0开始速配VPS用于网站等 搭建一个基于ChatGPT的QQ机器人(Yunzai-Bot) For Mac 010 Editor For Mac 13.0.1 Crack 破解 关于部署Cloudflare Zero Trust遇到的问题浅记录📝
如何自动续期证书?
LanYun · 2023-03-10 · via LanYunのBlog

前言

本文主要记录如何使用开源项目acme.sh 来自动化我们网站的证书续期.

本文采用的方式: DNS 验证 如需其他方式请看官方文档

域名解析提供商: cloudflare 所以需要它的注册邮箱和Global API Key或者某域名下的区域 ID和户 ID

由于网上已有类似内容(但质量,不好说),故本文尽可能表述清晰,易懂,易操作.手把手帮助大家进行相关操作.

安装

1
2
3
curl https://get.acme.sh | sh -s email=your@example.com 
source ~/.zshrc
acme.sh -h

获取令牌

使用全局 API 密钥

登录到您的 Cloudflare 帐户以获取您的API 密钥.

注意⚠️:生成的令牌不会存储在 cloudflare 帐户中,故你需要存储到安全的地方.另外,注意过期时间的设置,建议永久但要确保存储位置安全以及及时删除剪贴板中的密钥(某些程序和APP会读取剪贴板)等.

image-20230310195514768
1
2
3
export CF_Key="*****"	
export CF_Email="xxxx@**.com"

注意清除命令的历史记录(建议定期清除).

1
2
3
4
bash
history -c && history -w
zsh
history -c

或者暴力方式:rm ~/.bash_history && rm ~/.zsh_history

使用区域API令牌

此方法不做详细介绍,可以查看官方介绍如何使用 DNS API

令牌当前需要在所有区域中访问对 Zone.Zone 的读取访问权限和对 Zone.DNS 的写入访问权限。有关详细信息,请参阅问题 #2398

生成并安装证书

本文采用的是DNS验证方式,如需http方式请看官方文档.

1
acme.sh --issue --dns dns_cf -d example.com -d www.example.com 

例如:

image-20230310203147560

证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.

注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件,因为目录结构可能会变化.

Apache example:

1
2
3
4
5
acme.sh --install-cert -d example.com \
--cert-file /path/to/certfile/in/apache/cert.pem \
--key-file /path/to/keyfile/in/apache/key.pem \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd "service apache2 force-reload"

Nginx example:

1
2
3
4
5
acme.sh --install-cert -d example.com \
--cert-file /path/to/certfile/in/nginx/cert.pem \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/certfile/nginx/fullchain.pem \
--reloadcmd "service nginx force-reload"

没有service命令也可用:systemctl restart nginx.service

注意⚠️,运行命令之前,请先检查路径是否存在,否则请运行命令 mkdir -p yourpath(你的路径)

若你要申请泛域名

命令参考:

1
acme.sh --issue --dns dns_cf  -d "*.lanyundev.com"
1
2
3
4
5
acme.sh --install-cert -d "*.lanyundev.com" \
--cert-file '/path/to/acme/*.lanyundev.com/cert.pem' \
--key-file '/path/to/acme/*.lanyundev.com/key.pem' \
--fullchain-file '/path/to/acme/*.lanyundev.com/fullchain.pem' \
--reloadcmd "systemctl restart nginx.service"

其余相关命令

查看已安装证书信息

1
acme.sh --info -d example.com

更新证书

目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.

请确保 cronjob 正确安装, 看起来是类似这样的:

1
2
3
crontab  -l

56 * * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

更新 acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

升级 acme.sh 到最新版 :

1
acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

1
acme.sh --upgrade --auto-upgrade

之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

1
acme.sh --upgrade --auto-upgrade  0

查看证书列表

1
acme.sh --list

删除证书

1
acme.sh  --remove -d example.com

出错怎么办:

如果出错, 请添加 debug log:

1
acme.sh --issue  .....  --debug 

或者:

1
acme.sh --issue  .....  --debug  2

请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh

最后, 本文并非完全的使用说明, 还有很多高级的功能, 更高级的用法请参看其他 wiki 页面.

https://github.com/Neilpang/acme.sh/wiki