前言
各位站长估计对SSL证书都不陌生,SSL证书是实现HTTPS链接的关键(如果你问什么是HTTPS,那我只能简单的说是你与服务器之间,通过HTTPS是加密链接,确保你传输到服务器的信息不会泄露)。判断证书是否有效需要根据多方面,包括看是谁签发的、有效期、OCSP、CRL等手段可以判断证书是否有效。是谁签发的大多都是国际上大多数都信任的根CA签发,这些根CA是内置在设备当中或者浏览器当中。
背景
AAA Certificate Services是Comodo在2004年1月颁发的一张根证书,证书预期的到期时间是2029年1月,有有效期为25年,由Sectigo运营(当前Sectigo很多的新根证书都是与AAA Certificate Services做的交叉认证,因为AAA Certificate Services在很多老设备上都受信,例如安卓2、iOS 5、Firefox 3.0、Windows XP)。由于 Mozilla 信任库更新了其根证书信任策略,对全球所有 CA 的可信根证书生成后最少15年更换一次,超过时间的可信根将会逐步被 Mozilla 停止信任。因此在2025年4月15日起 Mozilla 不再信任由AAA Certificate Services前发出来的证书,同时DigiCert的两个根证书DigiCert Global Root CA和DigiCert High Assurance EV Root CA也在同一时间不再被信任。
事件缘由
小周在3月初在一个平台买了一张SSL.COM的SSL证书,想着SSL.COM的证书在很多设备当中,受信也比较好,刚好通配符的价格也在能够接受的范围之内,因此买了一张SSL.COM签发出来的通配符SSL,聪明的你估计已经发现了,就是现在这个站点的SSL证书。
今天,小周听到有访问博客的朋友说,网站无法访问了,说是证书不受信任。由于小周是开启了HSTS的,如果证书不正确,没办法通过HTTPS访问网站,就不能访问网站。
刚开始小周以为是买到了跑路服务商的证书,导致证书被吊销了(证书可以通过OCSP、CRL获取吊销信息,浏览器会查验这些信息),后来通过Edge浏览器访问,又发现是正常的,查询了一下OCSP吊销状态,发现也没有被吊销。当时小周觉得,这就奇了怪了,没有被吊销,还无法访问。后来问了水友才得知,是通过火狐访问时,显示无法访问。
于是,小周也下载了火狐浏览器,访问一看,哎?还真是,有兴趣的可以看一下这个站点,这个站点我部署的就是AAA Certificate Services为根的SSL证书:旧版-证书。
显示SEC_ERROR_UNKNOWN_ISSUER证书颁发者未知、证书为自签名的,或者服务器未发送正确的中间证书。
证书的信任链如下:
但是,也许你又发现了,站点的根证书是SSL.com TLS RSA Root CA 2022关AAA Certificate Services什么事呢?后来,在windows本地打开证书,发现识别出来的证书根是SSL.com TLS RSA Root CA 2022。也就是说,其实当前这张证书既支持以SSL.com TLS RSA Root CA 2022作为根证书,又支持以AAA Certificate Services,并且这两张根证书没有做交叉认证(交叉证书是由一个证书颁发机构 (CA) 颁发的数字证书,用于对另一个证书颁发机构的根证书的公钥进行签名。 交叉证书提供了一种创建从单个受信任的根 CA 到多个其他 CA 的信任链的方法。)。有些朋友可能很蒙根证书没有做交叉认证怎么实现同时受两个根证书的支持呢?
刚开始,小周也百思不得其解,后来注意到可能是中间证书SSL.com TLS Issuing RSA CA R1的原因。SSL.com TLS Issuing RSA CA R1有两个版本,一个是由SSL.com TLS RSA Root CA 2022签发的版本,证书如下:
-----BEGIN CERTIFICATE-----
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
iTZinEPk
-----END CERTIFICATE-----
使用该根作为根证书时,证书的信任链如下:
另外一个版本是由AAA Certificate Services签发的版本,证书如下:
-----BEGIN CERTIFICATE-----
MIIE/jCCA+agAwIBAgIRAMT4RcgnYpHswrPdHceMh00wDQYJKoZIhvcNAQELBQAw
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yNDA2MjEwMDAwMDBaFw0y
ODEyMzEyMzU5NTlaME8xCzAJBgNVBAYTAlVTMRgwFgYDVQQKDA9TU0wgQ29ycG9y
YXRpb24xJjAkBgNVBAMMHVNTTC5jb20gVExTIElzc3VpbmcgUlNBIENBIFIxMIIB
ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEArBsCFEDaO9kp5LVy+Q61qs0c
eyTudkfMpnOW86WVgjxn1Ol3GVEEJeGnAJacW6Me3/DElI3p/oAiH+RozfSaV1xq
zXYaFLr5xwzP3DjUiV8ez41QLh14JZLR+WV6VcNfYY0X1BtmvgmbjhICpycy/9DR
ibURLan6zcuisqA89B/2vVYnQG+ACJh4mTi7kWggWT5/vVII/U1kxUxH3b3F9KK/
LxZxmhcNZbeqU655LLUB/WqmAcfneAg41ZDWiE2qCS2xvByaNZZmUvkWdlWWUxp9
vFoOQ3TcqZVscwVTHL/s4btRCiJakhrrx516K9ohURYwctW1XYu7EflaLuD1GsPx
EB+Ly0WBxzNq1L/2eah3Iw8Xxfglx63oxEtD2mGgPxCybn0nDfyMYpGiDkVrgSFK
69+KXC4/mxU5cq+QlhhWyRSXlrM+QkBcUdySWtZpM3xx2YhNSWYKI82i2Mysc7R9
iG4rz5zJjJVIS7biFu4dSTRjXgQ/W+6RnfiFz84bAgMBAAGjggEnMIIBIzAfBgNV
HSMEGDAWgBSgEQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUebqUd6ANGd00
5jmk/Eyl0lpt9YwwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCMGA1UdIAQcMBowCAYGZ4EM
AQIBMA4GDCsGAQQBgqkwAQMBATBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3Js
LmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDA0BggrBgEF
BQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTAN
BgkqhkiG9w0BAQsFAAOCAQEAFTEjMQzlG8JU3bIPbc+vWUtusUzRXSoVmY7Y4Ybx
phiK7+coZgU0MOHYdSjmSGp16wly0l0L3acKwBanu5WqUnaeXyPqkgUOOD6w0JHc
FBcLXCCqPD7hnhYAjQuaU8t50OCEkCEYK4R5nh75paChmYPFci0XJRCFQHOK7xCo
boWSRjszDM/0/YYu/GV0fMAPxbMvKbr7WrCgGHsCl96mhPoRvUH8+cP4wLkoN81V
mv+BjERE6JwxadQFa9pxLacnCBNA7KfGteVkI2xN1MbiuATZujRQ7MxEBv+aZ7Sb
LZwAQqijFKgzcvRBeETD8JmmeKO7Ksf/XkPOvOA99wK5dQ==
-----END CERTIFICATE-----
最终签发出来了当前站点的证书,因此支持双根。
结尾
个人觉得还好支持双根,不然这张证书怎么和卖家说理呢?但是由AAA Certificate Services切换到SSL.com TLS RSA Root CA 2022很多老设备将不兼容,从名字也能看出来,后者是2022年才签发出来的新根,很多2022年之前,甚至2022年后来一段时间的设备都没有存储这个根,毕竟你不可能时光倒流回十几年前把根证书植入进去。但是对浏览器而言,很多浏览器是自带证书库的,因此保持浏览器是较新的版本就不会弹出不兼容的情况,毕竟在2023年11月,微软才宣布信任SSL.com TLS RSA Root CA 2022,可以从这篇文章中看到->2023 年 11 月部署通知 - Microsoft 受信任根计划。
再吐槽一下,但这也是火狐做的比较好的。火狐对OCSP、CRL的检查很频繁,Edge之类的浏览器只是偶尔检查一次OCSP或者CRL,一般很少检查,只要你的证书是可信的根证书颁发出来的证书,不会那么频繁检查OCSP和CRL,但是火狐就是经常检查,所以当火狐出现问题时,说明证书就真的存在问题了。
这一次是因为火狐直接在证书库内删除了AAA Certificate Services,我觉得这种情况下应该设置NotBefore,限制在这个日期之后签发的证书不能被信任,而在此之前的证书可以被信任。
评论区