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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
WordPress大学
WordPress大学
U
Unit 42
I
InfoQ
A
About on SuperTechFans
宝玉的分享
宝玉的分享
J
Java Code Geeks
博客园 - 司徒正美
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
腾讯CDC
Recent Announcements
Recent Announcements

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