security - SSL 证书 (CA) 如何准确验证?

标签 security ssl https certificate ca

我正在搜索有关如何执行 SSL 验证过程的算法,但几乎在所有地方,他们都将证书验证步骤解释为“证书由客户端检查”或类似的东西,但我想知道这背后的场景是什么。
我所知道的是:

  • 当客户端收到属于您要尝试握手的哪个网站/服务器的证书副本时,有一些指标显示网络服务器的 公共(public) 信息(我认为这是为了匹配您缓存的证书条目中的条目,您的浏览器已安装。)
  • 一旦客户端将缓存证书与网络服务器的证书匹配,它就会开始验证它。 它使用缓存证书的公钥解密网络服务器的签名。(?[不确定,因为公钥用于“加密”数据,而不是解密。这一步可能完全错误。])
  • 一旦解密,它会比较缓存的签名和网络服务器的签名。如果相同,则证书有效。
  • 我也听说过链子。我真的很想知道如何知道一个链,以及如何确定网络服务器的证书是否只是属于一个链。(?)

  • 客户端如何检查SSL证书?我需要一步一步地得到答案并加以澄清。 谢谢:)
    编辑:
    我认为这里的公钥用于“解密”而不是“加密”。所以公钥不负责每次 加密 ,它也可以 解密 并且不 加密 一些数据。这里的神奇之处在于,由于公钥在这里解密,如果你想伪造证书,你应该拥有那个 CA 的私钥来应用加密的更改(因为只有 私钥可以加密数据)。但是现在,另一个问题来了……如果我们使用网络服务器的公钥解密 ,然后更改签名中的条目,然后使用我们自己的 自己的 私钥再次加密它会怎样(我们手动生成它,它不属于到服务器。),这实际上让我们表现得像一个 CA;最后覆盖证书以保存我们的 自己的 公钥,它能够解密使用我们的 自己的 私钥加密的数据?

    最佳答案

    之间存在差异加密 签名 .
    客户端将公钥用于 加密 只有服务器才能使用服务器的私钥解密的数据。
    客户端使用公钥来验证 签名服务器发送的只能由服务器的私钥签名的数据。
    当客户端想要访问服务器时,服务器会向您发送包含公钥的证书。客户端通常 Web 浏览器将检查其集成 CA 的列表证书(如果它包含它)。

  • 如果它包含它,则客户端继续并获取授权此证书的 CA(证书颁发机构)。
  • 如果未找到但签名验证通过,客户端将收到警告说证书可能是自签名的并且可能是恶意的。
  • 如果客户端无法验证签名,则表示证书无效。

  • 对于信任链,您可以查看维基百科:
    https://en.wikipedia.org/wiki/Chain_of_trust
    您需要在此信任链中才能在 CA 的网络浏览器集成“数据库”中注册。
    希望它能回答你的问题,最好的问候,

    关于security - SSL 证书 (CA) 如何准确验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69841085/

    相关文章:

    security - 我应该与 "referral vendor"共享安全证书吗

    java - 尝试某些请求时出现 Spring Security 和 Angular 401 错误

    asp.net - User.IsInRole 返回 false

    linux - Apache SSL 证书配置 - sec_error_inadequate_cert_type

    ruby - 在 Linux 上的 Ruby 中使用 Net::HTTP 的 sslv3 警报非法参数

    java - ActiveMQ、SSL 和传输连接器

    http - 有没有办法为 GitHub Pages 禁用 SSL/TLS?

    java - 对同一资源使用 Oauth2 或 Http-Basic 身份验证的 Spring 安全性

    node.js - Nightmare HTTPS 选项 : ignoreSslErrors and sslProtocol not working for phantomJS

    python - 使用代理时如何避免 SSL 问题?