使用acme.sh免费生成ssl证书

安装acme

acme.sh开源地址:

GitHub - acmesh-official/acme.sh: A pure Unix shell script implementing ACME client protocolhttps://github.com/acmesh-official/acme.sh

安装命令

curl  https://get.acme.sh | sh

注意


安装目录默认当前用户的根目录,普通用户:/home/用户/.acme.sh/;root用户:/root/.acme.sh

设置快捷方式(可选)

alias acme.sh=~/.acme.sh/acme.sh

 切换获取证书的默认库

acme.sh --set-default-ca --server letsencrypt


默认从ZeroSSL获取证书切到letsencrypt申请证书 ZeroSSL不太稳定

生成证书及使用


证书生成

sh acme.sh --issue -d www.domain.com --webroot /usr/share/nginx/html


生成成功标识:

3YSvz5BVh+DlGH4lcWnlrq/vx4inOODH7yOXK/81XsrBs+qc3WYIIIbJS3EAmfyd
ArcadQdHrSgc+Y3rwgMJm3w/OObnLfaiD+n8JBRmgOkQU7ozEdR+BsqWNB8NQ9ke
kMpdK7zK1DjvMMstBtwVGvsblBnHOo9LVvCtvhhzU3jYaIjE9NdBR3K7XKYagkNy
0RK5fAJ7oGmwlQM1ZGQizm05Yhm38PPTbVxi
-----END CERTIFICATE-----
[2022年 06月 07日 星期二 00:31:20 CST] Your cert is in: /home/tech1/.acme.sh/www.domain.com/www.domain.com.cer
[2022年 06月 07日 星期二 00:31:20 CST] Your cert key is in: /home/tech1/.acme.sh/www.domain.com/www.domain.com.key
[2022年 06月 07日 星期二 00:31:20 CST] The intermediate CA cert is in: /home/tech1/.acme.sh/www.domain.com/ca.cer
[2022年 06月 07日 星期二 00:31:20 CST] And the full chain certs is there: /home/tech1/.acme.sh/www.domain.com/fullchain.cer

示例域名:www.domain.com
当前域名访问的根目录:/usr/share/nginx/html,用于验证域名

证书使用(证书解析容器可用格式)

nginx

sh acme.sh --install-cert -d www.domain.com --key-file /etc/ssl//acme/domain.key --fullchain-file /etc/ssl//acme/domain.pem --reloadcmd "service nginx force-reload"


解析成功标识:

[2022年 06月 07日 星期二 00:31:20 CST] Installing key to: /etc/ssl/acme/domain.key
[2022年 06月 07日 星期二 00:31:20 CST] Installing full chain to: /etc/ssl/acme/domain.pem
[2022年 06月 07日 星期二 00:31:20 CST] Run reload cmd: service nginx force-reload
Redirecting to /bin/systemctl force-reload nginx.service
[2022年 06月 07日 星期二 00:31:20 CST] Reload success

 证书续期


由于证书有效期只有90天,所以需要编写定时任务,每两月做一次续期


编写定时任务


定时任务示例:

vim createssl.sh
#! /bin/bash

#生成证书并验证, --force强制更新,默认60天更新一次
echo "creat acme"

sh acme.sh --issue -d www.domain.com --webroot /usr/share/nginx/html/dist --force

#将证书解析为nginx可用的
echo "to nginx"

sh acme.sh --install-cert -d www.domain.com --key-file /etc/ssl/acme/domain.key --fullchain-file /etc/ssl/acme/domain.pem --reloadcmd "service nginx force-reload"


 脚本赋权

chmod 777 createssl.sh


 配置定时任务



配置编辑
crontab -uroot -e
0 0 1 * * "/etc/ssl//createssl.sh" > /dev/null

其他当时任务命令:
systemctl stop crond #关闭crontab服务
systemctl start crond #开启crontab服务
systemctl restart crond #重启crontab服务
tail -f /var/log/cron #打印crontab日志(默认打印10条)
crontab -uroot -e 
#编辑crontab服务,配合insert esc :wq(保存退出) :q!(不保存退出)等指令
crontab -l #列出crontab任务列表
```

acme 脚本更新


目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

升级 acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

acme.sh  --upgrade  --auto-upgrade

之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

acme.sh --upgrade  --auto-upgrade  0

错误查看:
 acme.sh  --issue  .....  --debug 
 


 

你可能感兴趣的:(笔记,ssl,https,nginx,网络安全)