Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenSSL客户端证书与服务器证书_Ssl_Encryption_Openssl - Fatal编程技术网

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

OpenSSL客户端证书与服务器证书,ssl,encryption,openssl,Ssl,Encryption,Openssl,我有一些关于证书的基本问题。首先让我解释一下我对SSL身份验证的理解 SSL/TLS基本上有两个主要方面 身份验证-确保我们在两端与正确的一方通信 加密-加密两端之间传输的实际数据 证书具有公钥和一些附加信息。客户端(如“C”)和服务器(如“S”)之间的SSL通信如下所示 C向S发起请求 S将其公钥发送给C C验证S的身份(服务器身份验证或服务器身份验证) C将其公钥发送给S S验证C的身份(客户端身份验证或客户端身份验证) C生成对称密钥或会话密钥(比如“K”),并使用S公钥对其进行加密,然后

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

SSL/TLS基本上有两个主要方面

  • 身份验证-确保我们在两端与正确的一方通信
  • 加密-加密两端之间传输的实际数据
  • 证书具有公钥和一些附加信息。客户端(如“C”)和服务器(如“S”)之间的SSL通信如下所示

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

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

    我的问题如下:

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

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

  • 1) 你链接的文章很好:-)。换一种说法:证书中有一个字段说明允许使用它的用途。当您创建/请求一个证书时,您正在请求一个用于特定用途的证书,CA在此基础上对其进行签名

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

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


    2) 您是对的。

    服务器证书:

    服务器证书是在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 
    

    您的步骤6和7不正确。会话密钥通过密钥协商协议协商。不是客户选择的;没有加密;不传输;并且没有被解密。