首页
关于
Search
1
AdGuardHome 安装及部署教程
40,747 阅读
2
搭建基于telegram的无限网盘
10,109 阅读
3
关于微软Azure学生白嫖指南
9,736 阅读
4
Oracle开放全部端口并关闭防火墙
9,517 阅读
5
最新Cloudflare免费自选IP教程(非Partner)
9,337 阅读
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
登录
Search
标签搜索
docker
张至顺
PHP
图床
Cloudflare
金刚长寿功
PT
qBittorrent
阿里云
onedrive
telegram
代理
青龙
python
内网穿透
一键
telegraph
ipv6
cf_workers
serv00
myedunote
累计撰写
101
篇文章
累计收到
1
条评论
首页
栏目
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
页面
关于
搜索到
1
篇与
证书申请
的结果
2022-09-03
使用ACME申请域名证书并自动续期
ZeroSSL 和 Buypass 在 acme 端都有提供别具特色的证书服务。ZeroSSL 与 Let‘s Encrypt 功能重合且没有签发速率限制,Sectigo 的根证书以及网站管理页面也是不错的加分项。至于 Buypass,其能够免费签发 180 天的 DV 单域名证书,与亚信等用途类似不过并不需要实名认证或者手机号之类的敏感信息。之前不少人都是直接在 freessl.org 进行签发,后来改版之后就只剩下付费的选择了。而 ACME 在设计上更倾向于证书托管自动更新的方式,而像我这种临时签发证书测试或者用在一些不能使用 ACME 的平台上时,手动签发还是有一定的意义。安装 ACME 的服务器要跟 Buypass 和 ZeroSSL 的 API 能够稳定通信,我这里就用的腾讯云香港 24 的轻量作为演示,不仅国内操作比较稳定而且国际方向速度也很快。前段时间宝塔发布了腾讯云定制版,然后赠送了很多的轻量代金卷,选择轻量的大佬应该不在少数。一、安装 ACME只需要执行一下这条命令就可以一键安装,然后我并没有把证书托管到他自动化所以就直接在 crontab -e 将它的计划任务注释掉了。curl https://get.acme.sh | sh -s email=username@example.com刷新 shell 变量配置source ~/.bashrc开启自动更新acme.sh --upgrade --auto-upgrade导入 Cloudflare API Token,多个DNS区域,该帐户 ID 可以通过 Cloudflare 仪表板找到,作为登录时 URL 的末尾,或者在任何区域的概述页面上的右侧边栏中区域 ID 下方找到。export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" export CF_Account_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"导入 Cloudflare API Token,单个DNS区域,该区域 ID 可以通过 Cloudflare 仪表板在区域概述页面的右侧边栏中找到。export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" export CF_Zone_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"导入腾讯云 API3.0export Tencent_SecretId="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" export Tencent_SecretKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"导入DNSPod.cn 域名 API,要求您首先登录您的帐户以获取 DNSPod API 密钥和 IDexport DP_Id="<id>" export DP_Key="<key>"显示当前用户的所有环境变量printenv # 或 env添加系统级环境变量(需root权限、针对所有用户、永久生效)vim /etc/profile export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH" source /etc/profile使用unset删除指定的环境变量export TEST="Test..." #增加一个环境变量TEST env|grep TEST #此命令有输入,证明环境变量TEST已经存在了 TEST=Test... unset TEST #删除环境变量TES env|grep TEST #此命令没有输出,证明环境变量TEST已经删除二、配置 API目前 acme.sh 支持四个正式环境 CA,分别是 Let’s Encrypt、Buypass、ZeroSSL 和 SSL.com,默认使用 ZeroSSL,如果需要更换可以使用如下命令:简单来说,如果没有特殊需求,可以选择 Let’s Encrypt,如果服务器在国内,可以选择 ZeroSSL 或 Buypass,如果愿意付费得到更好的服务和保障,可以选择 ZeroSSL 和 SSL.com,如果面向欧盟用户,可以选择 Buypass 和 ZeroSSL。注意:经过测试 Google Public CA 的 ACME 验证域名在国内是无法访问的,只有国外服务器才可以申请,申请完成后的证书并无影响。#切换 Let's Encrypt acme.sh --set-default-ca --server letsencrypt #切换 Buypass acme.sh --set-default-ca --server buypass #切换 ZeroSSL acme.sh --set-default-ca --server zerossl #切换 SSL.com acme.sh --set-default-ca --server ssl.com #切换 Google Public CA(Google Public CA 需要按照官方博客申请内测,然后获取 Key) acme.sh --set-default-ca --server googleZeroSSL 获取 EAB 凭证,在此注册并获取 https://app.zerossl.com/developer 。然后执行以下命令将账户信息导入 ACME 。acme.sh --register-account --server zerossl --eab-kid [账户 eab-kid] --eab-hmac-key [账户 eab-hmac-key]Buypass 则只需要注册一下账户即可。acme.sh --server https://api.buypass.com/acme/directory --register-account --accountemail [你的邮箱]三、签发证书DNS 手动模式进行签发首先执行 issue 进行签发它会返回错误信息告诉你没有正确添加 DNS 记录。acme.sh --server https://api.buypass.com/acme/directory --issue -d [你的域名] --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please然后按照他的错误信息手动去 DNS 添加完,再执行一次 renew 就可以正确签发了。acme.sh --server https://api.buypass.com/acme/directory --renew -d [你的域名] --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please对于 ZeroSSL,只需要把前面的—server 换成 zerossl,并且可以包含多个域名进行签发,例如下面这样acme.sh --server zerossl --issue -d [你的域名 1] -d [你的域名 2] --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please手动进行 file 验证则把包括--dns 后的内容全部换为-w [验证文件目录]即可,比如下面这样。手动把验证文件复制到你网站目录下,然后和 dns 方式一样 renew 一次验证就可以了。acme.sh --server zerossl --issue -d [你的域名 1] -d [你的域名 2] -w [验证文件目录]签发后的证书在你的用户文件夹下 .acme.sh 文件夹下面,fullchain.cer 是你的完整证书,.key 就是你的密钥文件。之后续签这个证书依然可以使用上面的 renew 指令,在手动添加记录后再进行 renew 即可。DNS 自动模式签发RSA算法:国际标准算法,应用较早,最为普及,比ECC算法的适用范围更广,兼容性更好,一般采用 2048 位的加密长度,但是对服务端性能消耗高。ECC算法:中文名称为椭圆加密算法,新一代算法趋势主流,一般采用 256 位加密长度,加密速度快,效率更高,对服务器资源消耗低,而且最重要的是更安全,抗攻击型更强。如果要签发单域名证书,可以使用:acme.sh --issue --dns dns_cf -d test.demo.comacme.sh --issue --dns dns_tencent -d test.demo.comacme.sh --issue --dns dns_dp -d test.demo.com如果要签发泛域名证书,记得需要同时添加 demo.com和*.demo.comacme.sh --issue --dns dns_cf -d test.demo.com -d *.domain.comacme.sh --issue --dns dns_tencent -d test.demo.com -d *.demo.comacme.sh --issue --dns dns_dp -d test.demo.com -d *.demo.com运行后,acme.sh 将自动为您的域名申请证书,并将证书文件保存在~/.acme.sh/example.com/目录下,并且会自动为您的域名配置证书自动续期任务,无需手动续期。运行结果如下:四、自动刷新证书安装 acme.sh 时会自动创建一个 cronjob,每天定期检查所有证书,如果证书需要更新会自动更新证书。通过 crontab -l 查看 crontab 任务:若无定时任务,加之如下,对应路径改一下17 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null五、其他如果要撤销一个证书,使用:acme.sh --list acme.sh --revoke -d domain.tld acme.sh --revoke -d domain.tld --ecc如果要删除一个证书,使用:acme.sh --list acme.sh --remove -d domain.tld acme.sh --remove -d domain.tld --ecc强制刷新证书acme.sh --renew -d domain.tld --force acme.sh --renew -d domain.tld --ecc --force
2022年09月03日
1,075 阅读
0 评论
1 点赞