ssl - X.509 证书验证过程

标签 ssl https certificate ssl-certificate x509

我一直在阅读 x.509 证书,但我不太了解整个过程的工作原理。

我是这样理解的: CA 是一些生产证书的公司。 想要使用银行网站等网站的人联系 CA 并购买包含公钥的证书以对网站的消息进行编码,该消息只能由网站的私钥解码。

这就是我感到困惑的地方 - 用户(某些 Web 浏览器)如何检查它收到的证书是否真实并且确实来自正确的站点?它怎么知道它仍然有效? 进行什么样的检查以确保一切正常?

最佳答案

CA 不仅对服务器(银行网站)的证书进行签名,而且还拥有自己的由根 CA 签名的证书(其证书由...签名的 CA)。根 CA 将其证书提供给浏览器供应商,浏览器供应商将其包含在其受信任的根证书集中。

整个事情都建立在“信任链”的理念之上:签署证书意味着“如果你信任我(根或中间 CA),那么你就可以信任他(中间 CA 或服务器)”。您的浏览器只需要信任根 CA(它拥有证书)就可以确定它是否可以信任服务器(银行网站)。参见 https://en.wikipedia.org/wiki/Chain_of_trust

证书可能会变得无效,例如由于安全漏洞(例如私钥被盗)。向公开提供此信息的 CA 指示此类事件。浏览器可以通过证书撤销列表 (CRL) 或在线证书状态协议(protocol) (OCSP) 访问此信息。浏览器应配置为不接受无法验证其是否仍然有效的证书。参见 https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol

关于ssl - X.509 证书验证过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432917/

相关文章:

node.js - 通过 Mongoose.js 使用 SSL 和 mongos 连接到 Compose.io MongoDB 部署

security - 调查一个主要站点上的不安全证书警告

macos - Mac OS X 服务器代码签名证书更新失败

java - 为什么 Java 中不是默认启用所有密码套件?

javascript - FireFox 阻止内容

android - webview loadUrl 在浏览器中打开url

node.js - nodejs - npm install https,不起作用

c# - 在 MonoTouch 上使用 HTTPS 的 HttpListener

c# - 连接到安全 WebService

python - 验证证书的指纹