OpenSSL客户端证书与服务器证书

时间:2014-07-15 07:15:57

标签: ssl encryption openssl

我对证书有一些基本问题。首先让我解释一下我对SSL身份验证的理解。

SSL / TLS主要有两个主要内容,

  1. 身份验证 - 确保我们正在与两端的正确方进行通信。
  2. 加密 - 加密两端之间传输的实际数据。
  3. 证书包含公钥和一些其他信息。客户端(比如说' C')和服务器(比如' S')之间的SSL通信就像这样工作,

    1. C向S发起请求。
    2. S将其公钥发送给C.
    3. C验证S的身份(服务器身份验证或服务器身份验证)
    4. C将其公钥发送给S。
    5. S验证C的身份(客户身份验证或客户端身份验证)
    6. C生成对称密钥或会话密钥(例如' K')并使用S公钥对其进行加密并将其发送到服务器。
    7. 现在C和S都有共享的对称密钥,用于加密数据。
    8. 这里我认为客户端身份验证的步骤4和5是可选的。纠正我如果我错了。

      步骤1到5涉及非对称加密模式,即仅用于“身份验证”。之后,它涉及对称的加密模式,以实现它们之间的实际数据传输。

      我的问题如下,

      1. 我从这个link(与IIS服务器相关)中读到,有两种类型的证书。一个是客户端证书,另一个是服务器证书。我认为客户端发起请求的是客户端证书,另一个是服务器证书。客户端和服务器证书w.r.到OpenSSL有什么区别?这些证书中的CN名称与OpenSSL有什么区别吗?

      2. 我被要求使用客户端证书进行身份验证。这是否意味着我们绕过服务器身份验证并仅使用客户端证书进行身份验证?我不这么认为。根据我的理解,除了服务器身份验证之外,还应该进行客户端身份验证。如果我在这里错了,请纠正我。

2 个答案:

答案 0 :(得分:9)

服务器证书:

服务器证书是SSL握手期间由其提供的服务器的标识。

通常,它们由客户端熟知的证书颁发机构(CA)颁发,颁发证书的基础是拥有该服务器的一些公知标识符,对于Web服务器,它是服务器的主机名,使用的是到达服务器

Example:-  http://blog.8zero2.in/

Server certifictae

服务器证书目的

通过x509扩展参数

清楚地提及
Certificate Key usage 

 1. Signing 
 2. Key Encipherment

签名: - 这意味着证书中的密钥可用于证明证书CN中提到的服务器的身份,即实体身份验证。

密钥加密: - 表示可以使用证书中的密钥加密为会话派生的会话密钥(symmetic密钥)

客户证书:

名称所指示的客户端证书用于标识客户端或用户。 它们用于向服务器验证客户端。 持有客户证书的目的各不相同 它可能代表拥有电子邮件地址或Mac地址,通常映射到证书的序列号

客户证书目的

通过x509扩展参数

清楚地提及
Certificate Key usage 
1. Signing 

答案 1 :(得分:3)

1)你链接的文章很好:-)。换句话说:证书中有一个字段,说明允许使用哪些用途。当您创建/请求证书时,您要求获得特定用途的证书,并且CA会在此基础上对其进行签名。

为不同目的使用不同的证书并确保每个证书只能用于其预期目的更安全。 (或者如果你想玩世不恭,CA会让你购买单独的客户和服务器证书,以便他们获得更多销售。)

例如,您可能希望您的Web服务器能够将自己标识为您的公司用于服务目的,但不希望能够使用相同的证书来签署与其他企业的传出连接。

2)你是对的。