SSL证书完整操作流程:从生成到自动化续期
梳理服务器侧SSL证书的完整部署流程,涵盖私钥与CSR生成、证书签发、Nginx配置、安全加固及基于Certbot的无中断续期方案。
环境准备与工具选择
在申请证书前,需确保服务器具备独立公网IP与可解析的域名,并已安装OpenSSL及所选Web服务器(如Nginx)。对于生产环境,建议直接使用Certbot等ACME客户端,以支持自动化管理;若需自定义证书链或内部CA签发,则手动生成CSR。
生成私钥与证书签名请求
使用OpenSSL生成2048位RSA私钥,并创建CSR文件。命令示例:
openssl genrsa -out private.key 2048
openssl req -new -key private.key -out csr.pem -subj "/CN=yourdomain.com"
务必妥善保管私钥,设置仅root可读权限(chmod 600 private.key)。若需要支持多域名或通配符,可在-subj中添加Subject Alternative Name扩展,或通过交互式填写。
证书签发与验证
将CSR提交至CA(如Let's Encrypt或商业CA)。Let's Encrypt通过ACME协议自动完成域名验证,推荐使用DNS或HTTP验证。使用Certbot时可直接一条命令完成:
certbot certonly --webroot -w /var/www/html -d yourdomain.com
手动DOS验证可在网站根目录放置指定文件名及内容。签发后会得到fullchain.pem与privkey.pem两个核心文件,由Certbot统一管理路径(如/etc/letsencrypt/live/)。
Nginx部署与HTTPS配置
在Nginx server块中指定证书路径并启用HTTPS监听:
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
建议同时配置安全参数:启用TLSv1.2与v1.3,禁用不安全的加密套件,设置会话缓存与会话票证密钥。可参考Mozilla SSL Configuration Generator生成适用的配置片段。
强制HTTPS与重定向
为避免明文传输,应将所有HTTP流量重定向至HTTPS。在80端口server块中添加:
return 301 https://$host$request_uri;
同时开启HSTS头,通知浏览器仅通过HTTPS访问:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
证书续期与自动化
Let's Encrypt证书有效期90天,需定期续期。Certbot提供自动续期机制,可通过crontab或systemd timer部署。测试续期命令:
certbot renew --dry-run
通过后添加crontab:
0 3 * * * certbot renew --quiet --post-hook "nginx -s reload"
该设置每天凌晨3点检查并续期即将过期的证书,成功后重载Nginx,确保业务不中断。对于自签名或内部CA证书,需手动更新cert与key并重启服务。