使用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 { listen 80; listen [::]:80; server_name example.com; rewrite ^(.*)$ https://$host$1 permanent; }
server { listen 443 ssl; listen [::]:443 ssl; ssl_certificate "/www/ssl/nginx/example.cer"; ssl_certificate_key "/www/ssl/nginx/example.key"; server_name example.com; 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
|