最近SSL又经常面临更新,免费的阿里云,总是那么不方便。况且还不支持泛域名。考虑到SSL目前似乎已经是广泛的方法。查了查let’s还不错,但官方给的工具有点麻烦。考虑了下还是用acme.sh。默认server 支持的是zerossl,据说比let’s更自由。反正都差不多,记录一下设置过程。
安装
- 直接安装
网络通畅,github访问流畅可以使用,毕竟shell中也是要抓取github的数据
1 | curl https://get.acme.sh | sh -s email=xxxx@xxx.com |
- 下载安装
直接clone代码,也可以找个release版本下了后安装。毕竟github时不时会有抽风的时候。
1 | git clone https://github.com/acmesh-official/acme.sh.git |
注册Zero SSL
不一定用这个,也可以用let’s,但较为偷懒,就用默认呗
注册后,在Developer中,生成 EAB Credentials,用生成的kid和hmac-key。
用生成的key进行登陆,完成与Zero SSL的对接
1 | ./acme.sh --register-account --server zerossl \ |
与域名供应商API接口对接,生成SSL
域名供应商需要对SSL,生成TXT解析。这个步骤可以通过acme.sh与域名厂商API对接,直接生成。
这就完成了,通过域名厂商生成TXT解析->Zero SSL生成证书的过程。
godaddy的用法
1 | #设定godaddy的秘钥,秘钥通过godaddy厂商出生成 |
配置visudo(用普通用户账户时使用)
1 | sudo vimsudo |
配置Web服务
Apache
1 | <VirtualHost *:443> |
Nginx
SSL检测 网址
ssl检测方法
1 | server { |
更新
手动更新
1 | acme.sh --renew -d 域名 |
自动更新
默认安装证书时会自动创建定时任务,也可以手工添加定时任务
1 | #手工增加定时任务 |
可以通过手工运行该命令进行测试
1 | "/用户目录/.acme.sh"/acme.sh --cron --home "/用户目录/ubuntu/.acme.sh" |
正常情况内容:
1 | [Sat Feb 5 15:55:34 HKT 2022] ===Starting cron=== |
增加CAA
在域名服务商dns解析中增加CAA解析
其中name为域名前缀,如果是泛解析用@,否则用自定义前缀
Flags 设置0
Tag设置 issue
Value 域名
TTL 时效
“issue”标签可用于非通配符域和通配符域,而“issuewild”标签仅影响通配符域
“issue”标签允许 CA 为非通配符域 (www.example.com) 和通配符域 (*.example.com) 颁发证书。您可以使用“issuewild”标签指示 CA 如何处理通配符域。下面的示例显示了为 *.example.com 请求证书时哪些 CAA 记录生效:
官方推荐设置
Example #1:
Allow ZeroSSL certificates for site.com, including any subdomains as well as wildcards.
site.com. 3600 IN CAA 0 issue “sectigo.com”
site.com. 3600 IN CAA 0 issuewild “sectigo.com”
Example #2:
Allow ZeroSSL certificates for example.com, including any subdomains but not including wildcards.
site.com. 3600 IN CAA 0 issue “sectigo.com”
site.com. 3600 IN CAA 0 issuewild “;”
Example #3:
Allow ZeroSSL certificates for page.site.com only, not including the root domain, any subdomains as well as wildcards.
page.site.com. 3600 IN CAA 0 issue “sectigo.com”
site.com. 3600 IN CAA 0 issuewild “;”
site.com. 3600 IN CAA 0 issue “;”