云服务器 ssl 证书部署

本文介绍了在云服务器上部署SSL证书的完整流程,包括申请免费或付费证书(如Let’s Encrypt、腾讯云/阿里云DV证书)、上传证书文件(.crt和.key)、配置Web服务器(Nginx/Apache)启用HTTPS、强制HTTP跳转HTTPS,以及验证部署效果和定期续期等关键步骤,确保网站通信安全与可信访问。

云服务器上SSL证书的高效部署指南:从申请到自动续期一步到位

在HTTPS已成为网站标配的今天,为云服务器正确部署SSL证书,不仅关乎数据安全与用户信任,更直接影响SEO排名、浏览器兼容性及合规性(如GDPR、等保要求),许多运维人员仍卡在“证书申请失败”“Nginx配置后仍显示不安全”“到期忘记续期导致服务中断”等环节,本文以主流云平台(阿里云/腾讯云)+ Nginx为例,提供一套轻量、可靠、可复用的SSL部署实践方案,全程无需复杂命令,兼顾新手友好与生产可用性。

选对证书类型,省去90%麻烦
免费证书已足够满足绝大多数场景,推荐Let’s Encrypt(通过Certbot工具签发),其证书受所有现代浏览器信任,有效期90天,但支持全自动续期,避免手动购买商业证书——除非有特殊需求(如通配符域名、企业级OV/EV验证或API对接需要),若使用云厂商控制台申请,务必选择“DNS验证”而非HTTP验证:后者需开放80端口且依赖Web服务可达,而DNS验证仅需添加一条TXT记录,不受服务器防火墙、反向代理或CDN影响,成功率更高。

三步完成云服务器证书部署(以Ubuntu+Nginx为例)

  1. 安装Certbot并获取证书

    sudo apt update && sudo apt install certbot python3-certbot-nginx -y  
    sudo certbot --nginx -d example.com -d www.example.com  

    执行后,Certbot会自动检测Nginx配置、暂停服务、完成验证、生成证书(默认存于/etc/letsencrypt/live/example.com/),并更新Nginx配置启用HTTPS,整个过程约1分钟,无须手动编辑conf文件。

  2. 强化安全配置(关键!)
    自动生成的配置仅启用基础TLS,建议在Nginx的server块中补充:

    ssl_protocols TLSv1.2 TLSv1.3;  
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384;  
    ssl_prefer_server_ciphers off;  
    ssl_session_cache shared:SSL:10m;  
    ssl_session_timeout 10m;  
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;  

    上述配置禁用老旧协议,启用前向保密,并强制HSTS策略,防止降级攻击。

  3. 验证与监控
    访问 https://example.com,检查浏览器锁图标是否绿色;用 SSL Labs 测试得分(目标A+);执行 sudo certbot renew --dry-run 模拟续期,确认无报错。

告别证书过期焦虑:自动化才是核心
Let’s Encrypt证书90天过期,但系统已预置每日定时任务(/etc/cron.d/certbot),自动在凌晨2–5点间尝试续期,你只需做一件事:确保服务器时间准确(sudo timedatectl set-ntp on)且防火墙放行443端口(续期时需响应ACME挑战),若使用CDN(如Cloudflare),请将源站证书部署在云服务器,CDN侧单独配置自有证书——切勿关闭源站HTTPS,否则存在明文传输风险。

常见问题速查

  • Q:申请时提示“Failed to connect to host for DVSNI challenge”?
    A:说明HTTP验证失败,改用DNS验证:certbot certonly --manual --preferred-challenges=dns -d example.com,按提示添加TXT记录即可。

  • Q:部署后HTTP未自动跳转HTTPS?
    A:Certbot默认不强制跳转,在Nginx中添加:

    server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; }  
  • Q:多子域名(如api.example.com、blog.example.com)如何管理?
    A:首次申请时一并列出:certbot --nginx -d example.com -d www.example.com -d api.example.com,后续续期自动覆盖全部域名。

SSL证书部署的本质,不是一次性的技术操作,而是建立可持续的安全运维习惯,从选择自动化工具开始,到配置加固、定期验证、日志监控,每一步都在为业务构筑隐形护城河,当证书不再需要人工干预,安全才真正落地。

(全文共1287字)