知识卡片

两种CDN证书方案的取舍:私钥暴露 vs 浏览器安全降级警示

普通读书笔记卡

内容

面对CDN与HTTPS证书域名不匹配的冲突,业界主要有两种解决方案。方案一(Custom Certificate)是客户把自己的证书和对应的非对称私钥完整地交给CDN厂商,让CDN服务器直接使用客户的证书来响应握手请求,这样浏览器校验证书域名时看到的就是客户自己的证书,能顺利通过;但这个方案的根本风险在于,它违背了非对称密钥体系”私钥必须只掌握在证书所有者手中、绝不外泄”的设计初衷,客户被迫把最核心的私有信息完全暴露给第三方(CDN厂商)。方案二(Shared Certificate)是客户把加速域名的使用权限授权给CDN厂商,由CDN厂商用自己的证书(这份证书里包含了客户授权的域名)直接响应,私钥始终留在CDN厂商自己手里,客户不需要交出私钥;但这个方案的问题在于,目前大部分主流浏览器能够展示安全证书的详细信息,并通过颜色等视觉手段提示网站的安全等级,如果最终呈现给用户的证书是CDN厂商的证书而非网站自己的证书,浏览器就会判定这个网站不满足”最高安全等级”、给出警示,容易让用户误以为网站本身存在安全风险。这组取舍的本质是:一种方案牺牲了私钥的独占性来换取用户端观感上的”证书完全一致”,另一种方案保住了私钥安全却要承受浏览器安全等级展示上的降级观感,两者都不是零代价的完美方案,需要企业根据自己更在意私钥安全还是用户观感来权衡选择。

参考来源

- 位置:《高可用架构(第1卷)》第7章《安全与网络》"7.4 HTTPS环境使用第三方CDN的证书难题与最佳实践"节(源文件:_epub-src/OEBPS/Text/Chapter7_4.xhtml) - 结论依据:原文说明"客户将自己的证书和非对称密钥通通交给CDN厂商(Custom Certificate)……方案1的最大风险在于,其违背了证书和非对称密钥设计思路,将私有信息完全暴露给第三方……客户将加速域名授权给CDN厂商,CDN直接将自己的证书(包含客户授权的域名)返回给客户端(Shared Certificate)……方案2的问题在于,目前大部分最新的浏览器,能够展示安全证书的相关信息,并通过颜色等手段警告用户网站的安全级别。如果网站包含了CDN厂商证书,浏览器就会提示用户该网站不满足最高的安全等级",直接支撑本卡片结论。 - 原始内容:客户将自己的证书和非对称密钥通通交给CDN厂商(Custom Certificate)……方案1的最大风险在于,其违背了证书和非对称密钥设计思路,将私有信息完全暴露给第三方。方案2的问题在于……如果网站包含了CDN厂商证书,浏览器就会提示用户该网站不满足最高的安全等级,使用户误认为网站存在安全风险。