Chrome等浏览器如何检查SSL证书?
有他们使用的在线数据库或网站吗?
浏览器采取了哪些步骤来验证SSL证书?
我可以在不使用浏览器的情况下手动完成吗?
Chrome等浏览器如何检查SSL证书?
证书和链由服务器在SSL握手期间发送。浏览器将根据证书颁发者、提供的链证书和本地根证书创建信任链。它将检查证书的有效期和用途,还检查使用者的替代名称(可能还有使用者(,以确保证书实际上是为URL中的域颁发的。它还可能对证书吊销进行一些检查。
有关详细信息,请参阅SSL证书框架101:浏览器如何实际验证给定服务器证书的有效性?以及浏览器如何处理吊销的SSL/TLS证书?。
他们是否使用任何在线数据库或网站?
不是。必要的信任存储是本地的。他们可能会根据一些在线资源检查吊销。请参阅证书验证是否完全在本地完成?。
我可以在不使用浏览器的情况下手动完成吗?
当然,浏览器的功能理论上可以手动复制。例如,您可以访问该站点并使用openssl s_client -showcerts ...
获得叶证书和中间证书。然后可以使用openssl verify
验证证书链,另请参阅使用openssl验证验证证书链。然后,您需要查看带有openssl x509 -text ...
的叶证书,以检查用途、过期时间和主题。撤销是很棘手的,但可以在openssl-crl和openssl-ocsp的帮助下完成,尽管这并不能真正反映浏览器的功能
在实践中,浏览器可能会有所不同。Chrome主要使用谷歌决定的方案来"推送"他们选择的吊销数据,但这种情况不时发生变化。我最后听说的Firefox使用了他们自己的"一个CRL"方案。此外,尽管标准和传统的做法是根据SAN检查主机名(如果存在(,否则就回到Subject.CN,但Chrome从几年前开始就需要SAN,并且从不使用CN;你可以在几个堆栈上找到几十个关于";我的自签名或其他不是来自真正CA的DIY证书停止在Chrome上工作";。
如果你所说的"手动"真的是指手动,那将是一项大量的工作。如果你的意思是离线使用浏览器以外的工具,那就更容易了;OpenSSL(如果安装了(可以完成大部分操作,尽管您需要比Steffen的链接中显示的更多选项才能正确操作。
如果你的意思是使用浏览器以外的工具在线,那绝对是。近几十年来,WWW变得非常流行,有无数的程序和库可以访问WWW,几乎所有这些程序和库都包括HTTPS(尽管20年前这还不太常见(,其中包括验证证书——至少在默认情况下是这样;许多具有禁用、绕过或覆盖验证的选项。有像curl
和wget
这样的独立工具,或者openssl s_client
可以在不执行HTTP的情况下执行SSL/TLS和证书部分。python中的ssl
(或使用它的requests
(、nodejs中的tls
、Java中的(旧的(HttpsURLConnection
和(新的(java.net.http
等库和中间件不计其数,还有ApacheHttpComponents
等第三方;虽然我不熟悉perl和dotnet,但我确信它们是对等的。以及powershell,它在程序/库的区别上是模糊的。