当我使用Firefox访问该网站时,我收到以下错误:
The certificate is not trusted because no issuer chain was provided. (Error code: sec_error_unknown_issuer)@H_301_4@但是,如果我使用IE或Chrome连接到网站,它可以工作,我注意到RapidSSL随后被加载为中级CA.我不明白Chrome / IE(我假设它使用Windows证书存储区)知道如何将RapidSSL添加为中间CA.
当我使用openssl s_client来调试连接时,我得到了预期的行为(根据我的说法).
仅使用GeoTrust作为CA时,我得到以下内容:
Verify return code: 21 (unable to verify the first certificate)@H_301_4@仅使用RapidSSL作为CA:
Verify return code: 2 (unable to get issuer certificate)@H_301_4@使用时:
Verify return code: 0 (ok)@H_301_4@任何人都可以帮助我理解Windows如何将RapidSSL CA作为中间权限加载?
我听说,Firefox使用自己的证书存储和/或链接引擎. Chrome和IE使用Windows中的一个.
证书验证过程
将证书提交给应用程序时,应用程序必须使用证书链引擎来确定证书的有效性.只有在证书链成功验证后,应用程序才能信任证书和证书所代表的身份.三个不同但相互关联的过程用于确定证书的有效性:
■证书发现要构建证书链,证书链引擎必须收集颁发CA证书和所有CA证书,直至根CA证书. CA证书是从CryptoAPI缓存,组策略或企业策略中收集的,或者作为最后的手段,从颁发的证书中的授权信息访问(AIA)统一资源定位符(URL)下载.从CryptoAPI缓存以外的位置下载证书后,会将其添加到用户的CryptoAPI缓存中,以便更快地进行检索.
■路径验证当证书链引擎验证证书时,它会执行不要停留在提供的证书上.证书链中的每个证书都必须是验证,直到达到自签名根证书.验证测试可以包括验证authenticode签名,确定颁发CA证书是否包含在NTAuth存储中,或包含特定的应用程序或证书策略对象标识符(OID).如果一个证书未通过有效性测试,则整个链可能被视为无效并且未被调用应用程序使用.