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

Pra*_*abu 24 encryption ssl openssl

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

SSL/TLS基本上有两个主要的东西,

  1. 身份验证 - 确保我们正在与两端的正确方进行通信.
  2. 加密 - 加密两端之间传输的实际数据.

证书具有公钥和一些其他信息.客户端(比如"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都有共享的对称密钥,用于加密数据.

在这里,我认为客户端身份验证的步骤4和5是可选的.纠正我如果我错了.

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

我的问题如下,

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

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

小智 9

服务器证书:

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

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

Example:-  http://blog.8zero2.in/
Run Code Online (Sandbox Code Playgroud)

服务器证书

服务器证书目的

通过x509扩展参数清楚地提到

Certificate Key usage 

 1. Signing 
 2. Key Encipherment
Run Code Online (Sandbox Code Playgroud)

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

密钥加密: - 这意味着证书中的密钥可用于加密为会话派生的会话密钥(symmetic密钥)

客户证书: -

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

客户证书目的

通过x509扩展参数清楚地提到

Certificate Key usage 
1. Signing 
Run Code Online (Sandbox Code Playgroud)


小智 5

1)您链接的文章是一篇很好的文章:-)。换句话说:证书中有一个字段,说明允许将其用于什么用途。当您创建/请求证书时,您是在请求用于特定用途的证书,CA 在此基础上对其进行签名。

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

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

2)你是对的。