生产环境部署ssl证书核心是可信、稳定、可维护:必须选用let’s encrypt等受信ca签发的dv证书(多数场景首选)或ov/ev证书(金融/政务等强身份需求),配合acme协议实现自动续期;需确保域名解析正确、证书链完整、服务器配置禁用老旧协议与弱密码,并通过hsts、http跳转等机制持续加固。

生产环境部署 SSL 证书,核心是可信、稳定、可维护。不能用自签名,必须由受信任 CA(如 Let’s Encrypt、DigiCert、GlobalSign)签发;配置要兼顾安全性、兼容性和自动化续期能力。
选对证书类型和颁发机构
DV 证书适合大多数业务场景,Let’s Encrypt 免费、自动、广泛支持,是生产首选;OV/EV 证书适用于金融、政务等需强身份背书的系统,但成本高、流程长。通配符证书(*.example.com)适合多子域架构,多域名证书(SAN)适合跨品牌或混合域名服务。
- 确认域名已正确解析(A/AAAA 记录指向服务器 IP)
- 避免使用过期或不被主流浏览器信任的根证书(如已停用的 Symantec 根)
- 优先选择支持 ACME v2 协议的 CA,便于后续集成 Certbot 或 acme.sh
生成 CSR 并完成域名验证
使用 OpenSSL 生成密钥和 CSR,私钥务必本地保存、绝不上传;CSR 中的 Common Name(CN)字段在 SAN 证书中已非必需,但 Subject 信息仍需真实准确。
- 执行:
openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr - 验证方式按 CA 要求选:DNS 验证(添加 TXT 记录)最可靠;HTTP 文件验证需确保 Web 服务可公开访问 /.well-known/acme-challenge/ 路径
- 拿到证书后,检查是否包含完整证书链(服务器证书 + 中间 CA 证书),缺失会导致部分客户端(如老 Android、Java 应用)校验失败
按服务器类型配置 HTTPS 端点
不同服务端处理证书的方式差异较大,关键不是“放对文件”,而是让服务能正确加载私钥 + 证书 + 信任链,且禁用老旧协议与弱密码套件。
-
Apache:启用
ssl_module,在<virtualhost></virtualhost>中指定SSLCertificateFile(证书)、SSLCertificateKeyFile(私钥)、SSLCertificateChainFile(中间证书),并设置SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 -
Nginx:使用
ssl_certificate(合并证书与中间证书的 PEM 文件)、ssl_certificate_key(私钥),推荐将中间证书追加到站点证书末尾,避免链不全问题 -
Tomcat:把证书+私钥转成 PKCS12(
openssl pkcs12 -export -in cert.crt -inkey key.pem -out keystore.p12),再在server.xml的 Connector 中配置keystoreFile、keystorePass、keyAlias -
Spring Boot:直接配置
server.ssl.key-store=keystore.p12、server.ssl.key-store-password、server.ssl.key-store-type=PKCS12
加固与持续运维
部署完成只是起点。生产环境必须建立证书生命周期管理机制,避免因过期导致服务中断。
- 设置自动续期:Certbot 可配合 cron 每月执行
certbot renew --quiet --no-self-upgrade,续期成功后 reload 服务(如systemctl reload nginx) - 强制 HTTP 跳转 HTTPS:Apache 用
RewriteRule,Nginx 用return 301 https://$host$request_uri - 启用 HSTS(
Strict-Transport-Security头),防止降级攻击;建议初始 max-age 设为 300 秒测试,稳定后调至 31536000(1年) - 定期用 SSL Labs 测试 验证配置得分,重点关注协议支持、密钥交换、证书链、OCSP Stapling 等项











