security - 数字证书 : signing vs verifying?

标签 security ssl https digital-certificate

我试图了解数字证书(例如 SSL 证书)的两个主要用途,即签名验证(我相信)。

对于客户端和 Web 服务器之间的 SSL,我对证书验证的理解是浏览器使用 HTTPS 通过 URL 联系服务器。然后,服务器向浏览器提供其 SSL 证书。然后,浏览器必须验证 SSL 证书有效并且它与 URL 中的域属于同一域。

同样,对于客户端和 Web 服务器之间的 SSL,我对证书签名的理解是客户端(浏览器)首先验证服务器的 SSL证书是有效的,如果有效,浏览器会将证书放在自己的信任库中(一些本地的嵌入式数据库)。对该域的后续请求将首先检查服务器的 SSL 证书是否在客户端的信任库中,如果是,则不再需要验证。

我在这里或多或少是正确的,还是我离题太远了?

最佳答案

关于验证,您几乎是正确的。我要补充一点,浏览器还会尝试根据 CA(证书颁发机构)验证证书,但这可以由用户放弃。

这里解释得很漂亮 How are ssl certificates verified?

签名是另一回事。当申请人(例如 Web 服务器)希望 CA 为其签署证书时,它会创建一个 key 对、私钥和公钥,然后准备一个 CSR(证书签名请求),其中包含先前创建的公钥.然后 CA 创建一个签名证书(使用它自己的私钥),任何知道该 CA 公钥的实体都可以验证该证书。 Web 浏览器具有最常见的预安装 CA 列表。

关于security - 数字证书 : signing vs verifying?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253474/

相关文章:

ssl - 用Fiddler4解密SSL3.3(SSL3 TLS1.2)

php - 您将如何在启用 ssl 的网站上通过 curl 运行获取请求?

laravel - https 请求 "invalid request (unsupported ssl request)"

javascript - Node.JS,我的密码在 RAM 中安全吗?

java - 解释代码 - SSL

c# - 覆盖 ServicePointManager.ServerCertificateValidationCallback 时执行默认证书验证

ssl - 如何以及何时在 CFHTTP 标记中使用 ClientCert?

java - 基本用户帐户锁定系统

security - 在客户端散列密码是否具有安全意义

.net - 暴力破解验证码?