OpenSSL客户端证书与服务器证书的区别

31
我有一些关于证书的基础问题。让我先解释一下我对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.我从这个link(与IIS服务器相关)中了解到有两种类型的证书。一种是客户端证书,另一种是服务器证书。我认为发起请求的客户端侧是客户端证书,另一个是服务器证书。在OpenSSL方面,客户端证书和服务器证书有什么区别?这些证书的CN名称在OpenSSL方面有什么区别吗?
2.要求我使用客户端证书进行身份验证。这是否意味着我们绕过服务器身份验证,仅使用客户端证书进行身份验证?我不这样认为。据我所知,客户端身份验证应该是在服务器身份验证之外进行的。如果我理解有误,请纠正我。

你的第6步和第7步是不正确的。会话密钥是通过密钥协商协议协商的,它不是由客户端选择;也不加密、传输或解密。 - user207421
2个回答

12

服务器证书:

服务器证书是在SSL握手期间由服务器提供的身份验证。通常它们由客户端已知的证书颁发机构(CA)颁发,证书颁发的基础是拥有某些公开已知的服务器标识符,对于Web服务器来说,它是用于到达服务器的主机名。

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

服务器证书

服务器证书的目的

由X509扩展参数明确提及

Certificate Key usage 

 1. Signing 
 2. Key Encipherment

签名:表示证书中的密钥可用于证明CN字段中提到的服务器的身份,即实体认证。

密钥加密:表示证书中的密钥可用于加密为会话生成的会话密钥(对称密钥)。

客户端证书:

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

客户端证书目的

通过x509扩展参数明确说明。

Certificate Key usage 
1. Signing 

5

1) 你提供的文章很好。换句话说,证书中有一个字段标明了它被允许用于哪些用途。当您创建/请求证书时,您正在请求一种特定用途的证书,CA基于该基础签名。

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

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

2) 您是正确的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接