安装
1
| curl https://get.acme.sh | sh -s email=<your_email>
|
配置 alias 到 zsh 中
1
| alias acme.sh=/root/.acme.sh/acme.sh
|
或者设置软链接
1
| ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
|
生成证书
通过服务器来生成
1
| acme.sh --issue -d mydomain.com --nginx
|
1
| acme.sh --issue -d mydomain.com --apache
|
通过域名解析商提供的 api 来生成(个人最常用)
介绍
acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.
生成 api 的配置信息,这个请根据官方的来,链接: https://github.com/acmesh-official/acme.sh/wiki/dnsapi
配置好了过后,就可以使用了,以 dnspod 为例,
1
2
| export DP_Id="<id>"
export DP_Key="<key>"
|
之后生成证书就可以直接这样:
1
| ./acme.sh --issue --dns dns_dp -d example.com
|
1
| ./acme.sh --issue --dns dns_dp -d example.com -d *.example.com
|
切换 CA 机构
1
| acme.sh --set-default-ca --server letsencrypt
|
1
| acme.sh --set-default-ca --server buypass
|
1
| acme.sh --set-default-ca --se
|
使用证书
1
2
3
4
5
| acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com/fullchain.cer \
--ca-file /etc/nginx/ssl/example.com/ca.cer \
--reloadcmd "systemctl restart nginx"
|
然后配置 Nginx 的配置文件即可:
1
2
3
| ssl_certificate /etc/nginx/ssl/example.com/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
ssl_trusted_certificate /etc/nginx/ssl/example.com/ca.cer;
|
快速配置证书
在 zsh 中添加一个函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function ac() {
domain="$1"
if [ -z "$domain" ]; then
echo "Usage: ac <domain>"
return 1
fi
ssl_dir="/etc/nginx/ssl/$domain"
if [ ! -d "$ssl_dir" ]; then
mkdir -p "$ssl_dir"
fi
acme.sh --issue -d "$domain" --dns dns_cf
acme.sh --install-cert -d "$domain" \
--key-file "$ssl_dir/$domain.key" \
--fullchain-file "$ssl_dir/fullchain.cer" \
--ca-file "$ssl_dir/ca.cer" \
--reloadcmd "systemctl restart nginx"
echo "SSL certificate for $domain has been generated and installed, and Nginx reloaded."
}
|
--dns dns_cf
这儿要替换成自己的 dns 服务商对应的名字。
将其压缩成一行:
1
2
| # Add an alias for quick SSL certificate generation and Nginx reload
function ac() { domain="$1"; if [ -z "$domain" ]; then echo "Usage: ac <domain>"; return 1; fi; ssl_dir="/etc/nginx/ssl/$domain"; if [ ! -d "$ssl_dir" ]; then mkdir -p "$ssl_dir"; fi; acme.sh --issue -d "$domain" --dns dns_cf; acme.sh --install-cert -d "$domain" --key-file "$ssl_dir/$domain.key" --fullchain-file "$ssl_dir/fullchain.cer" --ca-file "$ssl_dir/ca.cer" --reloadcmd "systemctl restart nginx"; echo "SSL certificate for $domain has been generated and installed, and Nginx reloaded."; }
|
之后当我新添加一个域名的时候,直接使用
即可生成对应的证书,同时自动将其复制到 /etc/nginx/ssl/$domain
中,最后只需要自己替换一下 Nginx 对应域名的 SSL 配置即可。