ssl - 我们如何知道一个 SSL 签名属于一个特定的证书呢?

标签 ssl https ssl-certificate x509

我正在阅读以下有关 HTTPS 的文章:

http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

我确实了解我们如何验证签名是否真正由 VeriSign 创建。

但是我们怎么知道 VeriSign 为我们连接到的这个特定域(或实际上为这个证书)创建了这个签名?

既然我可以看到包括签名在内的证书,是什么阻止我创建自己的证书、用我在 Amazon.com 证书上看到的签名替换签名并假装拥有由 VeriSign 签名的证书?

最佳答案

Since I can see the certificate, including the signature, what stops me from creating my own certificate, replacing the signature with the one I saw on the Amazon.com certificate, and pretending to have a certificate signed by VeriSign?

证书具有主题、公钥、颁发者和签名(以及其他字段)。例如,主题可能是 example.com(DNS 名称)或 joe@example.com(和电子邮件地址),而颁发者可能是 Startcom 。发行人的签名将主体的公钥绑定(bind)到主体。这就是证书的全部作用:它通过授权机构的签名将公钥绑定(bind)到实体。该机构通常被称为“可信”或“可信第三方”。

因此,验证您试图伪造的证书的人将提取颁发者,获取颁发者的公钥(在不同的证书中),然后使用颁发者的公钥来验证您的证书数据。由于您伪造了签名(即使用了与发行人不同的公钥),因此签名验证将失败。

关于ssl - 我们如何知道一个 SSL 签名属于一个特定的证书呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399437/

相关文章:

java.security.cert.CertificateNotYetValidException 即使在 "valid from"日期之后

java - 有没有办法将 Java VM args 移动到 Spring Boot 配置文件?

java - 修复 javax.net.ssl.SSLPeerUnverifiedException : No peer certificate

java - 通过 ssl 将 cassandra 与 datastax cassandra JAVA 驱动程序连接

php - Apache RewriteRule 在 http 下工作,而不是在 https 下工作

linux - NginX 作为多个子域的 HTTPS 反向代理?

javascript - ShareThis 按钮在 HTTPS 网站上不可点击

apache - 使用 .htaccess 为多个域重定向到 HTTPS

asp.net - 为 Web 服务配置 SSL

ssl - 验证错误代码 = 20 : unable to get local issuer certificate