了解公钥基础设施工作流程的差距

时间:2011-01-31 18:19:10

标签: apache ssl ssl-certificate pki

最近,我偶然发现了对PKI行动过程的基本了解。我看过关于这些原则的主要文章,但我仍然对理解这个过程感到愚蠢。我知道PKI不适用于“我的博客”,但为了简单起见,我们来看看简单的例子“我的电子商店”(例如apache和php)和简单的概念。我写了一些可能含糊不清甚至错误的陈述,但这就是我想知道的PKI过程:

  1. “我的电子商店”作为一家公司需要在某些第三方CA“获得认证”。这意味着我需要在该CA购买某种1年的会员资格,然后,他们将在他们的系统中注册“我的电子商店”并向我发送一些证书和一对独特的公钥和私钥等内容。我会得到一些证书文件吗?

  2. 发布的证书中填写了我的信息和公钥,并存储在我的网络服务器的某个文件中。证书证明“我的电子商店”不是盗贼局。

  3. 每当用户通过“https”访问“我的电子商店”时,他们的浏览器“默默地”检查所提供的“我的电子商店”证书与在CA注册的证书。

    1. 用户怎么样?当他们通过https?
    2. 输入“我的电子商店”时,他们的浏览器会生成本地公钥+私钥吗?
  4. 当某个用户通过https输入“我的电子商店”时,会发生以下情况:“我的电子商店”(网络服务器)获取用户的公钥(PK1)。服务器默默地向用户呈现“我的电子商店”证书,因此用户获得“我的电子商店”的公钥(PK2)。在一些静默检查之后,用户的浏览器验证所呈现的certiticate并建立安全管道。

  5. 当用户通过安全管道发送请求时,请求使用“我的电子商店”的公钥加密。然后,Web服务器使用其私钥解密请求。然后,Web服务器使用用户的公钥发送加密响应。最后,用户的浏览器用他的私钥解密响应。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

您在几个不同级别上的步骤不正确。让我以明确的方式重述它们。

  1. 您的网站需要拥有来自受信任第三方CA(Verisign等)的SSL证书。您需要从他们那里购买。您将生成公钥/私钥对,向他们提供您的公钥(它是证书请求的一部分),他们将生成证书。

  2. 证书包含您网站的域名,公钥和其他一些其他信息。它没有验证任何东西,尤其不是你的网站不是“盗贼局”。它通常证明您拥有您要为其申请证书的域名。这并不意味着您的网站无论如何都值得信赖。

  3. 当用户通过HTTPS访问您的网站时,您的服务器会将证书发送到客户端的浏览器。客户端在任何时候都不会与CA通信以验证您的证书。

  4. 3.1。通常,最终用户(客户端,客户)不需要自己的证书和私钥。这称为相互身份验证的SSL,涉及拥有证书的双方(您的客户您的网站)。这在电子商务网站中很少使用(如果有的话)。

    1. 当用户通过HTTPS访问您的站点时,您的服务器会将证书发送到客户端浏览器。客户端将使用它来执行SSL握手。浏览器和您的站点之间的握手是建立安全隧道的原因。握手协议的细节比您需要的更具技术性。

    2. 当通过SSL隧道向服务器发送请求时,服务器将以与其他任何请求相同的方式处理它。唯一的区别是客户和服务器之间的通信是加密的。您的网络服务器可能会处理来自请求的数据解密,并将其呈现给您的网络服务器进行处理。同样,响应数据通过SSL隧道以加密形式返回给客户端。

    3. 更好?

答案 2 :(得分:0)

关于第3点:

据我所知,这并不完全正确。由于实际上没有一种已建立的实时测试基础设施(与DNS等服务相比),因此Web服务器会将完整的证书链发送到浏览器。 另一方面,浏览器或操作系统随附一组受信任的根证书(有时需要更新,Windows更新,新浏览器版本等)

是的,浏览器应该生成一个“不受信任的”密钥对,因为在正常情况下,标准用户不会生成自己的证书。

关于第5点:

这也不完全是事实。计算异步加密需要大量时间。因此,RSA算法仅用于交换密钥以实现更快的同步加密标准(即AES,3TES)。