Acme-SSL

Acme.sh脚本简介

由于现在市面上的ssl证书都要收费,有没有一种免费且又实用的工具来自动申请免费证书包括泛域名证书(*.a.com)类似的泛域名证书,它就是Acme.sh 是一款优秀免费的HTTPS证书管理器。它可以对接国内公有云厂商的接口来操作相对应的域名解析并验证后生成你想要的证书。相关api地址https://github.com/acmesh-official/acme.sh/wiki/dnsapi

接下来跟随脚步来安装并使用它生成相对应的证书吧

安装acme.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@Trojan-server:/app/soft# curl https://get.acme.sh | sh -s email=your@exmap.com
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1032 0 1032 0 0 22434 0 --:--:-- --:--:-- --:--:-- 22434
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 217k 100 217k 0 0 2318k 0 --:--:-- --:--:-- --:--:-- 2318k
[Fri 05 Apr 2024 09:22:05 AM UTC] Installing from online archive.
[Fri 05 Apr 2024 09:22:05 AM UTC] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Fri 05 Apr 2024 09:22:05 AM UTC] Extracting master.tar.gz
[Fri 05 Apr 2024 09:22:06 AM UTC] It is recommended to install socat first.
[Fri 05 Apr 2024 09:22:06 AM UTC] We use socat for standalone server if you use standalone mode.
[Fri 05 Apr 2024 09:22:06 AM UTC] If you don't use standalone mode, just ignore this warning.
[Fri 05 Apr 2024 09:22:06 AM UTC] Installing to /root/.acme.sh
[Fri 05 Apr 2024 09:22:06 AM UTC] Installed to /root/.acme.sh/acme.sh
[Fri 05 Apr 2024 09:22:06 AM UTC] Installing alias to '/root/.bashrc'
[Fri 05 Apr 2024 09:22:06 AM UTC] OK, Close and reopen your terminal to start using acme.sh
[Fri 05 Apr 2024 09:22:06 AM UTC] Installing cron job
no crontab for root
no crontab for root
[Fri 05 Apr 2024 09:22:06 AM UTC] Good, bash is found, so change the shebang to use bash as preferred.
[Fri 05 Apr 2024 09:22:07 AM UTC] OK
[Fri 05 Apr 2024 09:22:07 AM UTC] Install success!

这里使用的是阿里云的接口信息,需要提前去阿里云的访问控制里生成一个专用于api调用的key,其他厂商的也一样只是界面不同操作大同小异
先创建相关用户-只勾选openAPI调用访问,然后再授权整个dns的权限即可

添加dns接口权限其他的不用加

然后一开始创建用户好后会出现AccessKey 记得复制保存下来,后面在acme.sh里用到 把保存下来的accesskey 使用export导入到服务器上去

1
2
3
4
5
6
# 导入格式如下
export Ali_Key="<key>"
export Ali_Secret="<secret>"
# 导入自己的key和secret值即可
root@Trojan-server:~/.acme.sh# export Ali_Key="LTAI5txxxxxx"
root@Trojan-server:~/.acme.sh# export Ali_Secret="bbbdxxxxxxx"
设置默认CA

设置默认你想要的CA厂商作为你今后的证书颁发商

1
2
root@Trojan-server:~/.acme.sh# ./acme.sh --set-default-ca --server letsencrypt
[Fri 05 Apr 2024 10:04:16 AM UTC] Changed default CA to: https://acme-v02.api.letsencrypt.org/directory
生成单域名证书

格式如下:
./acme.sh –issue –dns dns_ali -d bog.a.com

生成泛域名证书
1
2
# 格式为-d a.com -d *.a.com 主体放前、后面是泛域名*.a.com
root@Trojan-server:~/.acme.sh# ./acme.sh --issue --dns dns_ali -d a.com -d *.a.com


前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

./acme.sh –install-cert -d bog.oi.com
–key-file /app/cert/bog.oi.com.key
–fullchain-file /app/cert/bog.oi.com.cert


后面就可以用bogoi.com.key、bog.oi.com.cert 配置到nginx上去了


Acme-SSL
https://www.dklwj.com/2024/04/Acme-SSL.html
作者
阿伟
发布于
2024年4月5日
许可协议