Web浏览器是否缓存SSL证书?


26

是否有任何网络浏览器缓存SSL服务器证书?例如,如果我更改了Web服务器上的SSL证书,当所有Web浏览器通过SSL连接时,是否所有浏览器都会选择新证书,或者它们可能具有过期证书?

我正在考虑SSL证书过期并被Web服务器上的新证书替换的情况。


我认为浏览器会检查证书上的日期,以查看是否需要更新证书,就像其他所有证书一样,但是不确定。
soandos

看看这里imperialviolet.org/2011/05/04/pinning.html有关“证书钉住”,并在HSTS主动WHIS是关系到前dev.chromium.org/sts
Shadok

1
截至2019年,我的Chrome 75正在缓存SSL证书
Fabian Thommen

Answers:


10

好吧,RedGrittyBrick的答案是正确的,但并不能真正回答问题。问题是浏览器是否这样做,而不是他们是否应该这样做。

据我所知,MSIE和Chrome实际上都在缓存证书,并且在它们获得新版本时,只要旧版本有效,就不要替换它们。他们为什么这样做,这不是我所理解的,因为它降低了安全性。


当前接受的答案非常清楚。它专门表示没有,浏览器不缓存证书。正如您指出的那样,情况已发生变化,Chrome记录下来的原因得到了充分的记录,很适合您链接这些原因。由于证书仍然有效,因此不会“降低”没有意义的安全性。
Ramhound 2015年

3
它确实降低了它,因为您不能用新的SHA-1替换旧的SHA-1密钥,因为旧的仍然有效,并且如果我理解一切正确,Chrome会忽略新的。因此,没有办法强制转换到更高的安全标准-因此,由于无法启用更高的安全性,因此相对而言“降低”了安全性。就像通货膨胀不会降低您的货币指定价值,而是它的实际市场价值。
tuexss 2015年

5
+1在StartSSL混合了SHA1 / SHA2连锁惨败之后,很明显Windows上的Chrome浏览器确实在缓存中间证书,可能是无限期地。Chrome将忽略服务器发送的任何新的中间证书。尚不清楚缓存是由服务器证书的身份还是中间证书的身份来键入的,以及究竟是由什么构成的。
罗伯特·瓦赞(RobertVažan)

3
今天就解决了这个问题,Chrome和Firefox在正常窗口(旧证书)和隐身模式(正确的证书)中显示了不同的证书。命令行实用程序(例如curl或openssl)会报告正确的证书。通过清除浏览器的缓存(ctrl + shift + del)进行修复-清除Chrome的“ cookie和其他站点数据”,清除Firefox的“离线网站数据”。
anilech

1
至少在OSX上,当前版本的Firefox(66.0)似乎非常牢固地保留了其缓存。昨天,我为网站更新了TLS证书,CLI openssl和Chromium都向我显示了新证书。Firefox向我展示了旧版本,尽管重新加载后禁用了缓存,但清除了所有缓存和脱机数据并重新启动了浏览器。
Tad Lispy

20

否。请参阅IBM SSL概述

  1. SSL客户端发送“客户端问候”消息,该消息列出诸如SSL版本之类的加密信息,并按客户端的优先顺序列出客户端支持的CipherSuite。该消息还包含一个随机字节字符串,该字符串将在后续计算中使用。SSL协议允许“客户端问候”包括客户端支持的数据压缩方法,但是当前的SSL实现通常不包括此规定。

  2. SSL服务器以“服务器问候”消息响应,该消息包含服务器从SSL客户端提供的列表中选择的CipherSuite,会话ID和另一个随机字节字符串。SSL服务器还会发送其数字证书。如果服务器需要数字证书进行客户端身份验证,则服务器将发送“客户端证书请求”,其中包括支持的证书类型列表和可接受的证书颁发机构(CA)的专有名称。

  3. SSL客户端验证SSL服务器的数字证书上的数字签名,并检查服务器选择的CipherSuite是否可接受。

微软的总结与此类似。TLS握手在这方面也类似。

在第2步中,客户端似乎没有办法说“不要打扰发送服务器证书,我将使用我的缓存”。

请注意,有几种类型的证书,客户端,服务器和CA。其中一些已缓存。


修改了原始问题,以澄清它是服务器证书。
洛林·霍希斯坦

这是不正确的,并且由于对SSL工作原理的概述而假定没有缓存,因此排除缓存是非常糟糕的理由。youtube.com/watch?v=wMFPe-DwULM
Evan Carroll

可以使用的唯一缓存是有效性检查,尽管这是安全性的折衷。
丹尼尔B

0

我不确定我的输入是否会有所帮助,但这就是我刚刚经历的事情:我有一个蔚蓝的网站带有自定义域。在为我的域名配置SSL绑定之前,我尝试使用Chrome浏览器中的https访问它。Chrome浏览器告诉我,该站点没有安全保护,这很合理(ERR_CERT_COMMON_NAME_INVALID),但是在我上传证书并以天蓝色配置SSL绑定后,我仍然遇到相同的错误。在此阶段,当打开一个新的专用浏览器窗口(或使用其他浏览器)时,https工作正常。

但是我无法在开放的Chrome会话中使用它。我尝试清除SSL状态,结果相同。完全重新启动chrome后,它可以正常工作。

我可能被某些东西欺骗了,但看起来好像证书已被缓存...


该错误意味着您使用不同于CN中的URI访问站点。设置绑定后,您是否真的更改了URI以访问chrome中的网站?
赛斯

不,那时候我唯一改变的是绑定。当我第一次查询https时,它是使用默认的azure ssl证书提供的,但是在Azure中使用正确的证书更改了绑定后,它仍然为我提供此服务。
艾蒂安

正如您说的那样,您配置了域SSL绑定,是否意味着您一开始就使用域访问了服务器?该错误表明您使用的URL与该证书所使用的URL之间存在差异。我正是这个意思。另外,如果您考虑HSTS等,您的实际服务器配置可能会非常重要。
赛斯

1
步骤1:将网站发布为天青。在此阶段,它同时具有默认的蔚蓝URL和默认的证书。步骤2:为Web应用程序设置自定义域,现在mysite.com正确指向该站点。尚未配置mysite.com的SSL证书。步骤3:此时,当尝试访问该网站时,出现安全错误,提示该证书不匹配(这很合理)步骤4:我在Azure和STILL中为Mysite.com安装SSL证书Chrome会弹出安全警告。在任何其他浏览器中或在我打开私人导航时都不会发生。
Etienne

1
步骤5:我重新启动Chrome,现在(并且仅现在)使用正确的SSL证书为我的网站提供服务。因此,我的结论是确实存在证书的缓存问题
Etienne

-1

一些浏览器开发人员计划实施这样的缓存系统,以检测攻击,例如2011年对Diginotar攻击

但是目前AFAIK尚无此类系统在当前浏览器中处于活动状态。因此,在更新服务器证书时不必考虑这种情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.