面试题答案
一键面试正确构建SSL证书链
- 证书获取:从证书颁发机构(CA)获取服务器证书、中间证书。服务器证书是直接安装在CDN服务器上,用于证明服务器身份;中间证书用于连接服务器证书和根证书,构建完整信任路径。
- 排序:将服务器证书放在最前面,紧接着按顺序放置中间证书,顺序是从最接近服务器证书的下级CA证书开始,一直到中间证书链的顶端(不包含根证书,根证书通常预装在客户端操作系统或浏览器信任库中)。这样确保客户端可以从服务器证书出发,通过中间证书,追溯到受信任的根证书。
客户端验证CDN提供的SSL证书链详细步骤
- 证书接收:客户端向CDN服务器发起HTTPS请求,服务器返回SSL证书链,客户端首先接收并解析服务器证书。
- 基本验证:
- 有效期检查:检查证书的起止日期,确保当前日期在证书有效期内。
- 名称匹配:验证证书上的域名是否与所访问的CDN域名一致,防止中间人攻击用其他域名证书冒充。
- 构建信任路径:客户端从服务器证书开始,沿着中间证书链,尝试找到一个受信任的根证书。客户端会在其内置的根证书存储中查找匹配的根证书。
- 证书签名验证:
- 对于服务器证书,使用中间证书中的公钥验证服务器证书签名的真实性。如果签名验证通过,表明服务器证书是由该中间CA签发。
- 对于中间证书,重复上述步骤,使用上级中间证书或根证书的公钥验证签名,直至验证到根证书。如果整个证书链上所有证书签名验证都通过,说明证书链是可信的。
可能遇到的问题及解决方案
- 证书过期:
- 问题描述:证书有效期已过,客户端会收到证书过期警告。
- 解决方案:CDN运营商需要及时更新证书,从CA获取新的有效证书并重新安装配置到服务器。
- 域名不匹配:
- 问题描述:证书上的域名与访问的CDN域名不一致,这可能是证书错误配置或遭受中间人攻击。
- 解决方案:CDN运营商应检查证书配置,确保使用的是与CDN域名匹配的证书。客户端可以手动检查证书信息,若怀疑中间人攻击,应停止访问并向相关方报告。
- 证书链不完整:
- 问题描述:客户端收到的证书链缺少必要的中间证书,无法构建完整信任路径到根证书。
- 解决方案:CDN运营商需要确保服务器返回完整的证书链,正确配置中间证书。客户端可以尝试从CA官方网站下载缺失的中间证书,但这种方式有风险,可能下载到伪造证书,应谨慎操作。
- 根证书不受信任:
- 问题描述:证书链顶端的根证书不在客户端信任库中,可能是使用了不受广泛信任的CA。
- 解决方案:CDN运营商应选择受广泛信任的CA机构颁发证书。对于特殊情况使用了不常见CA,客户端可以手动导入根证书到信任库,但同样要确保根证书来源可靠,防止导入恶意根证书。