是否有任何网络浏览器缓存SSL服务器证书?例如,如果我更改了Web服务器上的SSL证书,当所有Web浏览器通过SSL连接时,是否所有浏览器都会选择新证书,或者它们可能具有过期证书?
我正在考虑SSL证书过期并被Web服务器上的新证书替换的情况。
是否有任何网络浏览器缓存SSL服务器证书?例如,如果我更改了Web服务器上的SSL证书,当所有Web浏览器通过SSL连接时,是否所有浏览器都会选择新证书,或者它们可能具有过期证书?
我正在考虑SSL证书过期并被Web服务器上的新证书替换的情况。
Answers:
好吧,RedGrittyBrick的答案是正确的,但并不能真正回答问题。问题是浏览器是否这样做,而不是他们是否应该这样做。
据我所知,MSIE和Chrome实际上都在缓存证书,并且在它们获得新版本时,只要旧版本有效,就不要替换它们。他们为什么这样做,这不是我所理解的,因为它降低了安全性。
openssl
和Chromium都向我显示了新证书。Firefox向我展示了旧版本,尽管重新加载后禁用了缓存,但清除了所有缓存和脱机数据并重新启动了浏览器。
否。请参阅IBM SSL概述
SSL客户端发送“客户端问候”消息,该消息列出诸如SSL版本之类的加密信息,并按客户端的优先顺序列出客户端支持的CipherSuite。该消息还包含一个随机字节字符串,该字符串将在后续计算中使用。SSL协议允许“客户端问候”包括客户端支持的数据压缩方法,但是当前的SSL实现通常不包括此规定。
SSL服务器以“服务器问候”消息响应,该消息包含服务器从SSL客户端提供的列表中选择的CipherSuite,会话ID和另一个随机字节字符串。SSL服务器还会发送其数字证书。如果服务器需要数字证书进行客户端身份验证,则服务器将发送“客户端证书请求”,其中包括支持的证书类型列表和可接受的证书颁发机构(CA)的专有名称。
SSL客户端验证SSL服务器的数字证书上的数字签名,并检查服务器选择的CipherSuite是否可接受。
…
微软的总结与此类似。TLS握手在这方面也类似。
在第2步中,客户端似乎没有办法说“不要打扰发送服务器证书,我将使用我的缓存”。
请注意,有几种类型的证书,客户端,服务器和CA。其中一些已缓存。
我不确定我的输入是否会有所帮助,但这就是我刚刚经历的事情:我有一个蔚蓝的网站带有自定义域。在为我的域名配置SSL绑定之前,我尝试使用Chrome浏览器中的https访问它。Chrome浏览器告诉我,该站点没有安全保护,这很合理(ERR_CERT_COMMON_NAME_INVALID),但是在我上传证书并以天蓝色配置SSL绑定后,我仍然遇到相同的错误。在此阶段,当打开一个新的专用浏览器窗口(或使用其他浏览器)时,https工作正常。
但是我无法在开放的Chrome会话中使用它。我尝试清除SSL状态,结果相同。完全重新启动chrome后,它可以正常工作。
我可能被某些东西欺骗了,但看起来好像证书已被缓存...
一些浏览器开发人员计划实施这样的缓存系统,以检测攻击,例如2011年对Diginotar的攻击。
但是目前AFAIK尚无此类系统在当前浏览器中处于活动状态。因此,在更新服务器证书时不必考虑这种情况。