发布于 

使用acme.sh生成免费数字证书

官方网站:https://github.com/acmesh-official/acme.sh

安装acme.sh

1
curl https://get.acme.sh | sh -s email=my@example.com

将acme.sh复制到/home目录下,并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

使用Aliyun注册证书

导出Aliyun的AccessKey和AccessSecret

1
2
export Ali_Key=""
export Ali_Secret=""

通过ecc算法生成数字证书

1
acme.sh --issue -d example.com --keylength ec-256 --dns dns_ali

若需要用到二级域名也可以将一起通过通配符申请数字证书

1
acme.sh --issue -d example.com -d *.example.com --keylength ec-256 --dns dns_ali

保存数字证书

将acme.sh生成的数字证书copy出来以便nginx或其他地方使用,这里通过acme.sh官方的提供的方式进行copy,而不是手动copy,当数字证书即将过期将自动指定定时任务去copy证书到指定位置,reloadcmd指在定时更新定时任务后调用的脚本,一般来重启nginx

1
2
3
4
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"

查看数字证书信息

1
acme.sh --info -d example.com

在nginx中配置使用数字证书

参考配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
# 监听80端口,将http请求重写为https请求
listen 80;
listen [::]:80;
server_name example.com;
rewrite ^(.*)$ https://$host$1 permanent;
}

server {
# 监听https 443端口
listen 443 ssl;
listen [::]:443 ssl;
# 配置证书和key
ssl_certificate "/www/ssl/nginx/example.cer";
ssl_certificate_key "/www/ssl/nginx/example.key";
server_name example.com;
# 转发到8888端口的服务
location / {
proxy_pass http://localhost:8888;
}
location /.well-known/acme-challenge/ {
root /www/ssl/;
log_not_found off;
}
}

移除数字证书

1
acme.sh --remove --ecc -d example.com



Copyright © 2023 ChenWei | Powered By Stellar
本站已运行 00 小时 00