使用 acme.sh 免费获取 SSL 证书

本文将详细介绍如何使用 acme.sh 脚本申请 Let’s Encrypt 免费 SSL 证书,并在 Nginx 服务器上配置 HTTPS。

🚀 1. 安装 acme.sh

首先在服务器上安装 acme.sh 脚本:

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

注意: 请将 your@email.com 替换为您的真实邮箱地址


🔑 2. 申请 SSL 证书

使用以下命令申请证书:

1
~/.acme.sh/acme.sh --issue -d jay-ms.site -d www.jay-ms.site -w /var/blog

参数说明

  • -d jay-ms.site — 主域名
  • -d www.jay-ms.site — 带 www 的子域名(可选)
  • -w /var/blog — 网站根目录,acme.sh 会在此目录创建验证文件

验证原理: Let’s Encrypt 会访问 http://jay-ms.site/.well-known/acme-challenge/... 来验证域名所有权


📁 3. 部署证书到 Nginx

3.1 创建证书目录

为了便于管理,建议创建专门的证书目录:

1
sudo mkdir -p /etc/nginx/ssl

3.2 安装证书

将签发的证书和私钥部署到 Nginx 目录,并设置自动更新:

1
2
3
4
~/.acme.sh/acme.sh --install-cert -d jay-ms.site \
--key-file /etc/nginx/ssl/jay-ms.site.key \
--fullchain-file /etc/nginx/ssl/jay-ms.site.cer \
--reloadcmd "systemctl reload nginx"

⚙️ 4. 配置 Nginx 启用 HTTPS

编辑 Nginx 配置文件 /etc/nginx/conf.d/default.conf,添加以下配置:

主要配置项

  • 启用 HTTPS:使用 acme.sh 生成的证书文件
    • 证书:/etc/nginx/ssl/jay-ms.site.cer
    • 私钥:/etc/nginx/ssl/jay-ms.site.key
  • HTTP 重定向:自动将 HTTP 请求重定向到 HTTPS
  • SSL 协议优化:配置安全的 SSL/TLS 协议

示例配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 80;
server_name jay-ms.site www.jay-ms.site;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name jay-ms.site www.jay-ms.site;

ssl_certificate /etc/nginx/ssl/jay-ms.site.cer;
ssl_certificate_key /etc/nginx/ssl/jay-ms.site.key;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

# 您的网站配置
location / {
root /var/blog;
index index.html;
}
}

🔄 5. 自动续期

acme.sh 会自动添加到 crontab 中,每天检查证书是否需要续期。您也可以手动检查:

1
2
3
4
5
# 查看自动续期任务
crontab -l

# 手动强制续期
~/.acme.sh/acme.sh --renew -d jay-ms.site --force

✅ 验证结果

配置完成后,访问您的网站:

  • http://jay-ms.site → 自动跳转到 https://jay-ms.site
  • 浏览器地址栏显示🔒图标,表示 HTTPS 连接成功

📚 参考资料