如何识别假SSL证书?

时间:2011-10-11 23:58:21

标签: security ssl cryptography certificate ssl-certificate

我读过关于SSL协议的内容,现在,我知道它如何加密数据。但有一些我无法理解的东西。使用SSl,您确定要向正确的服务器发送数据并从中获取数据。但是怎么样? 我的意思是,如果我创建假证书并将其发送给特殊网站的请求,浏览器(或其他程序)如何检测假证书?

编辑:我并不是要创建自签名证书。我的意思是,如果我创建一个证书,证明其发行人和主题等是真正的证书,我怎么能验证我的证书! (唯一不真实的是公钥和签名)

5 个答案:

答案 0 :(得分:15)

答案 1 :(得分:8)

SSL证书由certificate authority (CA)签署,public key encryption是用户已经信任的人(或者更有可能是设计操作系统信任的人)。

CA使用certificate revocation list对证书进行数字签名。基本的解释是CA有一个“私钥”,以及每个人都知道的“公钥”。通过一些数学我不明白,CA可以使用其私钥创建签名,可以使用其公钥轻松验证(但公钥不能用于创建新签名)。

当您从服务器获得SSL证书时,您将获得服务器的公钥,以及来自CA的签名,表明它是有效的(以及其他一些信息)。如果您知道并信任该CA,则可以检查签名并确定其是否有效。您还可以使用{{3}}确保其未被撤销。

基本上,您可以识别错误的SSL证书,因为它没有您信任的证书颁发机构签名。

答案 2 :(得分:3)

您创建的任何虚假证书都是自签名证书。

当连接到具有用户将立即忽略的自签名证书的站点时,浏览器将显示大的可怕警告。

为了避免出现警告,您需要一个由浏览器信任的证书颁发机构签名的证书,例如VeriSign。 这些公司将希望确保您真正拥有他们签署的证书的域名。

Re:修改:如果您从受信任的CA签名,则只能创建非自签名证书。
他们将拒绝为不同的主题签署证书。

答案 3 :(得分:0)

证书有效,因为它们遵循信任链。证书包含一个或多个受信任的发行人链;这条链是其工作原理的支柱。浏览器和几乎所有SSL证书库都进行此链检查,或者至少提供选项。

自签名证书(或以自签名证书结尾的链发布的证书)将无法通过此检查。

答案 4 :(得分:0)

根据我的理解,程序是

  1. 服务器发送servers public key
  2. 服务器发送certificate(所有信息由受信任的CA用其私钥加密)
  3. 您的PC使用公开密钥(从受信任的CA内置到操作系统中)解密证书
  4. 您的PC哈希(带有sha1sha256servers public key
  5. 您的PC将servers public key的哈希值与certificate存储的哈希值进行比较,如果不是同一浏览器将阻止站点,则
  6. 您的PC比较certificate中允许的域和该域(如果不允许的话),如果使用的浏览器不同则将阻止该站点
  7. 您的PC将比较certificate中的有效日期和您的日期,如果无效,浏览器将阻止该站点。

要伪造此商品,您将需要:

  • 获取CA私钥(极其难以获得)
  • 成为CA,
  • 成为5眼(政府情报机构联盟)的一部分,并要求CA提供其私钥

因此,如果您在地址栏中看到一个挂锁,则几乎总是安全的。