SSL证书部署
CDN加速后SSL证书配置错误排查指南

网站没接CDN之前HTTPS好好的,接完CDN用户开始反馈"证书不安全"。这种问题排查起来头疼,因为链路多了一层,到底是CDN节点的问题还是源站的问题,得一步步定位。

先搞清楚CDN的SSL模式

主流CDN(Cloudflare、阿里云CDN、腾讯云CDN)通常提供几种SSL模式:关闭HTTPS、边缘HTTPS+回源HTTP、全程HTTPS、用户自带证书。报错最频繁的是"边缘HTTPS+回源HTTP"这个模式——CDN节点对用户用HTTPS,但回源到你的服务器走HTTP。如果源站做了HTTP强制跳转HTTPS,就会触发重定向循环,页面一直转圈打不开。排查方法:用curl直接请求源站HTTP地址,看是否返回301跳转到HTTPS。如果是,把CDN回源协议改成HTTPS,或者在源站给CDN回源请求加白名单跳过强制跳转。

CDN节点证书和源站证书不一致

有些CDN默认提供一张通用证书(比如 *.cdn-provider.net),用户访问你的域名时,CDN返回的是它自己的证书,域名不匹配,浏览器自然报错。解决方法:在CDN控制台上传你自己的SSL证书和私钥,或者使用CDN厂商的免费证书功能(通常基于Let's Encrypt自动签发)。上传后确认CDN节点已经生效,可以用 openssl s_client -connect CDN节点IP:443 -servername 你的域名 来验证返回的证书是否正确。

回源时SNI没带对

源站上部署了多张证书(多个域名共用一个IP),CDN回源时如果不带SNI(Server Name Indication),源站不知道该返回哪张证书,可能返回默认的那张,导致域名不匹配。Nginx源站确认配置了 ssl_server_name on;,CDN控制台确认回源Host和SNI设置正确。如果CDN不支持自定义回源SNI,考虑给每个域名分配独立IP,或者减少同IP下的证书数量。

CDN场景下SSL证书部署的核心原则:边缘证书和回源证书都要配对,协议模式要和源站跳转策略一致。搞清楚这两点,排查效率能提升一大截。