acme.sh实战:5分钟为Nginx配置免费SSL证书(含自动续期指南)

张开发
2026/5/17 19:51:41 15 分钟阅读
acme.sh实战:5分钟为Nginx配置免费SSL证书(含自动续期指南)
5分钟实战用acme.sh为Nginx部署SSL证书全攻略当你第一次在浏览器地址栏看到那个灰色的小锁图标变成绿色时那种成就感绝对值得回味。SSL证书不再是大型网站的专属现在任何人都能在几分钟内为自己的站点开启HTTPS加密。acme.sh这个轻量级工具正是实现这一目标的神器。1. 环境准备与acme.sh安装在开始之前确保你的服务器已经安装了Nginx并且能够正常运行。打开终端用这个简单命令检查Nginx状态nginx -v如果看到版本号输出说明Nginx已就绪。若出现command not found则需要先安装Nginx# Ubuntu/Debian系统 sudo apt update sudo apt install nginx -y # CentOS/RHEL系统 sudo yum install epel-release sudo yum install nginx -y安装acme.sh只需要一行命令curl https://get.acme.sh | sh安装完成后建议立即设置自动更新acme.sh --upgrade --auto-upgrade提示acme.sh会安装在你的用户目录下所有后续操作都应该在同一用户下执行避免权限问题。2. 证书申请与验证acme.sh支持多种验证方式这里我们介绍最常用的HTTP验证和DNS验证两种方法。2.1 HTTP验证方式这是最简单的验证方法适合大多数场景acme.sh --issue -d yourdomain.com -d www.yourdomain.com --webroot /var/www/html参数说明-d指定域名可以多次使用来申请多域名证书--webroot指定网站根目录acme.sh会在此创建验证文件2.2 DNS验证方式对于无法通过HTTP验证的情况如某些CDN配置或者需要申请通配符证书时DNS验证是更好的选择acme.sh --issue -d yourdomain.com -d *.yourdomain.com --dns dns_cf这里以Cloudflare为例dns_cfacme.sh支持数十种DNS服务商。使用前需要先设置API密钥export CF_Key你的API密钥 export CF_Email你的注册邮箱3. Nginx证书安装与配置证书申请成功后需要将其安装到Nginx能识别的路径acme.sh --install-cert -d yourdomain.com \ --key-file /etc/nginx/ssl/yourdomain.com.key \ --fullchain-file /etc/nginx/ssl/yourdomain.com.crt \ --reloadcmd systemctl reload nginx接下来配置Nginx的SSL部分。以下是一个完整的配置示例server { listen 443 ssl http2; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/nginx/ssl/yourdomain.com.crt; ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; location / { root /var/www/html; index index.html; } }配置完成后测试并重载Nginxnginx -t nginx -s reload4. 高级配置与自动续期4.1 双证书部署为了兼容更多客户端可以同时部署RSA和ECC两种证书server { listen 443 ssl http2; # ECC证书 ssl_certificate /etc/nginx/ssl/yourdomain.com.ecc.crt; ssl_certificate_key /etc/nginx/ssl/yourdomain.com.ecc.key; # RSA证书 ssl_certificate /etc/nginx/ssl/yourdomain.com.rsa.crt; ssl_certificate_key /etc/nginx/ssl/yourdomain.com.rsa.key; # 其他配置... }申请ECC证书只需添加--keylength ec-256参数acme.sh --issue -d yourdomain.com --keylength ec-256 --webroot /var/www/html4.2 自动续期配置acme.sh默认会自动创建续期任务你可以通过以下命令检查acme.sh --install-cronjob续期日志可以在~/.acme.sh/acme.sh.log查看。如果遇到问题可以手动触发续期测试acme.sh --renew -d yourdomain.com --force4.3 常见问题排查证书不生效检查Nginx配置路径是否正确确认443端口已开放使用openssl s_client -connect yourdomain.com:443测试连接续期失败检查DNS解析是否正常确认验证文件可被访问查看acme.sh日志获取详细错误性能优化建议启用OCSP Stapling减少握手时间使用TLS 1.3协议提升性能配置HSTS增强安全性在实际项目中我发现将证书存储在统一目录如/etc/nginx/ssl/并设置适当权限最为可靠。每次续期后acme.sh会自动执行reloadcmd重载Nginx完全无需人工干预。这种一次配置永久有效的体验正是acme.sh深受开发者喜爱的原因。

更多文章