SSL证书完整操作流程:从生成到自动化续期

发布时间:2026-06-25 20:16

梳理服务器侧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并重启服务。