一、安装 acme.sh
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m my@example.com
# 生效命令(关闭当前终端重新连接也可)
source ~/.bashrc
# 验证安装成功
acme.sh --version二、(可选) 配置默认 CA(Let's Encrypt)
acme.sh --set-default-ca --server letsencrypt三、创建 ACME 专用验证目录
核心:不占用业务根目录,单独给证书验证使用
# 创建验证目录
mkdir -p /var/www/challenge/.well-known/acme-challenge
# 设置权限
chmod -R 755 /var/www/challenge
chown -R nginx:nginx /var/www/challenge四、配置 Nginx
在nginx配置80端口中, 配置DNS验证块, 让 Let’s Encrypt 服务器通过互联网访问这个文件, 访问成功 → 证明域名归你 → 给你发证书
# ACME 证书验证专用
location /.well-known/acme-challenge/ {
root /var/www/challenge;
try_files $uri =404;
}配置ssl证书存放位置(其他https自行配置)
ssl_certificate /etc/nginx/ssl/kongbai121.xyz.cer;
ssl_certificate_key /etc/nginx/ssl/kongbai121.xyz.key;最终 Nginx 配置
server {
listen 80;
listen [::]:80;
listen 443 ssl;
server_name www.kongbai121.xyz kongbai121.xyz;
ssl_certificate /etc/nginx/ssl/kongbai121.xyz.cer;
ssl_certificate_key /etc/nginx/ssl/kongbai121.xyz.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# ACME 证书验证专用
location /.well-known/acme-challenge/ {
root /var/www/challenge;
try_files $uri =404;
}
location / {
proxy_pass http://localhost:18090/;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}五、申请 SSL 证书
acme.sh --issue -d kongbai121.xyz -d www.kongbai121.xyz -w /var/www/challenge六、安装证书到 Nginx
# 创建证书存放目录
mkdir -p /etc/nginx/ssl
# 安装证书(关键:reloadcmd 自动重载Nginx)
acme.sh --install-cert -d kongbai121.xyz \
--key-file /etc/nginx/ssl/kongbai121.xyz.key \
--fullchain-file /etc/nginx/ssl/kongbai121.xyz.cer \
--reloadcmd "nginx -s reload"七、设置定时任务, 即将到期时自动续签
打开cron任务列表
crontab -e配置执行任务
31 2 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null八、常用维护命令
# 查看所有证书
acme.sh --list
# 查看证书详情
acme.sh --info -d kongbai121.xyz
# 更新 acme.sh
acme.sh --upgrade
# 开启自动更新
acme.sh --upgrade --auto-upgrade
评论区