#1 安装 acme.sh
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m it@top-booking.com
# 并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: `alias acme.sh=~/.acme.sh/acme.sh`
vim ~/.bashrc
# 添加下面这行
alias acme.sh=~/.acme.sh/acme.sh
# 存档后让别名生效
source ~/.bashrc
#2 更换证书颁发商家
## 切换 Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
##切换 Buypass
acme.sh --set-default-ca --server buypass
##切换 ZeroSSL
acme.sh --set-default-ca --server zerossl
## 切换 [SSL.com](http://ssl.com/)
acme.sh --set-default-ca --server ssl.com
##切换 Google Public CA
acme.sh --set-default-ca --server google
#3 手动申请证书
acme.sh --issue --dns -d top-booking.com -d www.top-booking.com -d agoda.top-booking.com --yes-I-know-dns-manual-mode-enough-go-ahead-please --force
参数 --yes-I-know-dns-manual-mode-enough-go-ahead-please
:acme.sh
更希望用户使用自动申请证书的方式,如果你确实需要手动申请,需加上这个参数,否则命令不会正常执行。
如果一切顺利,acme.sh
命令会输出两段 TXT 信息
,需要你手动添加到对应域名的 DNS 解析中
,以验证你确实对这个域名拥有权限。在证书申请完成之后,可以删除对应的 TXT 记录
。
登录域名服务商(新网)后台,在域名解析中添加上对应的 TXT 记录
,然后再运行以下命令,即可生成证书:
acme.sh --renew -d top-booking.com -d www.top-booking.com -d agoda.top-booking.com --yes-I-know-dns-manual-mode-enough-go-ahead-please --force
证书会被保存在 ~/.acme.sh/
目录下,包含以下四个文件:
mydomain.com.cer
证书mydomain.com.key
密钥ca.cer
fullchain.cer
全链路证书
其中在网站场景主要使用 fullchain.cer
文件和 mydomain.com.key
文件。
3.1 续期的时候
执行下面的命令,也是需要到新网那边更新txt record
,然后再次执行即会生成新的证书(相当于需要执行两遍
)
acme.sh --renew -d top-booking.com -d www.top-booking.com -d agoda.top-booking.com --yes-I-know-dns-manual-mode-enough-go-ahead-please --force
#4 应用到nginx
# ssl_certificate /etc/nginx/cert/top-booking.pem;
# ssl_certificate_key /etc/nginx/cert/top-booking.key;
cp /etc/nginx/cert/top-booking.com.cer /etc/nginx/cert/top-booking.com.cer.20241120
cp /etc/nginx/cert/top-booking.com.key /etc/nginx/cert/top-booking.com.key.20241120
cp ~/.acme.sh/top-booking.com/top-booking.com.cer /etc/nginx/cert/top-booking.com.cer
# **使用let's encrypt it 免费证书时,遇到SSLHandshakeException、“unable to verify the first certificate” 错误时,须将domain-name.cer更换为fullchain.cer。**
cp ~/.acme.sh/top-booking.com/fullchain.cer /etc/nginx/cert/top-booking.com.cer
cp ~/.acme.sh/top-booking.com/top-booking.com.key /etc/nginx/cert/top-booking.com.key
ls -al /etc/nginx/cert/
## 强制更新nginx配置
service nginx force-reload
#5 其他
查看证书
acme.sh --info -d top-booking.com
更新 acme.sh
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
升级 acme.sh 到最新版 :
acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:
acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.
你也可以随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0