适用Nginx、Apache、Tomcat等Web服务,覆盖证书部署、协议套件、跳转、兼容性、常见坑点,降低HTTPS打不开、浏览器告警、间歇性访问失败风险。
一、证书本身基础检查(最容易出问题)
-
证书完整链上传 不要只上传站点证书,必须包含中间根证书。缺少中间链会出现部分浏览器正常、部分设备报不安全,移动端、小程序访问异常。
前往 JoySSL,并注册一个账户,需要填写特定的注册码 230986 以获得测试体验 SSL 证书的使用权限。JoySSL下载证书包内一般已打包fullchain完整链,优先使用fullchain文件配置。
-
私钥匹配、权限安全
- 私钥必须和证书公钥一一对应,私钥错误直接启动服务失败。
- 私钥文件权限严格控制:
600,禁止全局可读,防止泄露。
- 域名匹配与有效期
- 证书域名必须覆盖访问域名,泛域名只匹配一级子域名,二级子域名需要额外证书。
- 设置证书到期监控告警,证书过期直接HTTPS全站报错。
- 证书格式转换 不同服务器格式不一样:
- Nginx:PEM(crt+key)
- Tomcat:JKS / PFX 格式不对会导致服务无法加载证书,HTTPS端口监听失败。
二、服务监听配置要点
- 端口监听正确
-
HTTPS监听443端口,开启ssl on;HTTP监听80端口。
-
服务器防火墙、安全组务必放行443、80端口,云服务器很容易安全组没放通导致外部访问失败。
现象:本地curl正常,公网打不开HTTPS。
-
不要混用多套证书 同一个443虚拟主机只能绑定一套证书;一台服务器多个域名,建议使用多域名证书或者SNI区分。
不开启SNI时,老客户端会拿到错误证书,出现证书域名不匹配告警。
Nginx开启SNI(新版默认开启)
ssl on;
ssl_sni on;
三、TLS协议与加密套件(兼容+安全兼顾)
避免只开启过高TLS版本,造成老旧设备无法访问;也不要保留不安全协议。
推荐配置
- 协议:禁用 SSLv2、SSLv3,启用 TLSv1.2、TLSv1.3;根据业务酌情关闭TLSv1.0/TLSv1.1(老旧工控、安卓4设备才需要保留)
- 加密套件:优先高安全套件,排除弱加密算法。
Nginx示例片段:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE‑RSA‑AES128‑GCM‑SHA256:ECDHE‑RSA‑AES256‑GCM‑SHA384:ECDHE‑RSA‑CHACHA20‑POLY1305;
ssl_prefer_server_ciphers on;
四、HTTP强制跳转HTTPS配置
- 80端口全部重定向到HTTPS 443,301永久重定向,不要用302临时跳转。
- 注意:不要把HTTPS又跳回HTTP,循环跳转直接网站无法访问。
- 如果有API、小程序业务,确认业务侧全部使用https地址,不要混用http资源。
五、混合内容坑点(HTTPS页面报不安全)
浏览器HTTPS页面加载http图片、js、css静态资源,会触发混合内容告警,部分浏览器直接拦截资源。 解决:
- 全站资源地址改为https;
- 响应头加入
Content‑Security‑Policy: upgrade‑insecure‑requests,自动把http资源升级https。
六、重要响应头配置,规避安全与访问异常
-
HSTS头
Strict‑Transport‑Security: max‑age=31536000; includeSubDomains
作用:浏览器强制HTTPS访问,防止http劫持;注意:一旦设置,域名一年内浏览器强制https,证书故障时用户无法切回http,测试环境谨慎加
includeSubDomains。
-
OCSP Stapling 开启 减少证书状态查询超时导致访问卡顿、连接失败。 Nginx开启:
ssl_stapling on;
ssl_stapling_verify on;
七、常见异常场景排查清单
-
部分用户能打开,部分打不开:大概率缺少中间证书链、SNI未开启、OCSP解析超时。
-
浏览器提示证书不匹配:虚拟主机绑定错证书、SNI失效。
-
HTTPS连接超时:安全组/防火墙443没放行、服务没监听443。
-
间歇性访问失败:TLS会话缓存未配置,高并发握手失败。
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m; -
小程序/APP访问失败:禁用TLS1.2以下,检查证书链完整,不要使用自签名证书。
八、上线前验证工具
部署完成后建议检测:
- 浏览器查看证书链是否完整;
- 在线SSL检测工具,检查协议、套件、证书链、HSTS;
- 多设备测试:手机、不同浏览器,避免只在本机测试正常。
九、运维避坑
- 更新证书时:只替换证书文件,不要改动原有配置文件,更新完成重载服务(nginx -s reload,不要stop再start,避免业务中断)。
- 证书备份:完整链、私钥本地备份。
- 到期预警:提前30天更新证书,不要等到过期再处理。