使用 acme.sh 配置 SSL 证书

好久没有折腾自己的网站,想不到证书居然过期了。经过一番探索后,道路是光明的,让我找到了一种方式可以免费申请证书并定时自动续签。

使用 acme.sh 配置 SSL 证书

1.安装 acme.sh

在linux服务器里面安装命令,email填写自己的邮箱

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

如果因为网络原因,可以换一下命令

1
2
3
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m username@example.com

安装完成后重新加载 Bash:

1
source ~/.bashrc

开启自动更新:

1
acme.sh --upgrade --auto-upgrade

2.签发证书(HTTP、DNS)

有两种方式,我使用的是http方式验证签发证书。

假设你域名是 example.com,解析到你的服务器让其生效后,建立一个目录:

1
mkdir -p /var/www/letsencrypt

然后在nginx里面修改配置

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
listen [::]:80;
server_name example.com;

location /.well-known/acme-challenge {
root /var/www/letsencrypt;
}

location / {
rewrite ^/(.*)$ https://$host/$1 permanent;
}
}

然后运行命令:

1
acme.sh --issue -d example.com -w /var/www/letsencrypt

后面会出现success字样证明证书签发成功

3.安装证书

1
2
3
4
5
6
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--ca-file /etc/nginx/ssl/example.com.ca.crt \

## /etc/nginx/ssl 是你想把证书安装到的目录,可以自己创建,后面需要用到

最后在 Nginx 配置指定证书文件路径:

1
2
3
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_trusted_certificate /etc/nginx/ssl/example.com.ca.crt;

使用命令查看证书状态:

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