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
Ssl 为什么我们需要在Windows中安装.pfx证书(而不是.cer),然后才能使用客户端证书进行呼叫?_Ssl_Ssl Certificate_X509certificate_Mmc_Mutual Authentication - Fatal编程技术网

Ssl 为什么我们需要在Windows中安装.pfx证书(而不是.cer),然后才能使用客户端证书进行呼叫?

Ssl 为什么我们需要在Windows中安装.pfx证书(而不是.cer),然后才能使用客户端证书进行呼叫?,ssl,ssl-certificate,x509certificate,mmc,mutual-authentication,Ssl,Ssl Certificate,X509certificate,Mmc,Mutual Authentication,我编写了一个小型控制台应用程序,使用客户端证书对服务器进行HTTP调用。我编写的代码从指定位置读取.cer文件以发出请求: X509Certificate Cert = X509Certificate.CreateFromCertFile("JohnDoe.cer"); HttpWebRequest Request = (HttpWebRequest) WebRequest.Create("https://10.135.12.166:4434"); Req

我编写了一个小型控制台应用程序,使用客户端证书对服务器进行HTTP调用。我编写的代码从指定位置读取.cer文件以发出请求:

  X509Certificate Cert = X509Certificate.CreateFromCertFile("JohnDoe.cer");            
  HttpWebRequest Request = (HttpWebRequest)
  WebRequest.Create("https://10.135.12.166:4434");
  Request.ClientCertificates.Add(Cert);
  Request.UserAgent = "Client Cert Sample";
  Request.Method = "GET";
  HttpWebResponse Response = (HttpWebResponse) Request.GetResponse();
但是,除非您将证书安装在证书管理器中当前用户的个人文件夹中,否则此代码无法工作。更具体地说,它仅在安装了.pfx证书时有效,而不是.cer

据我所知,客户端证书仅用于身份验证而不是加密,对吗?所以

  • 为什么我们需要安装证书?为什么我的程序不能从该位置拾取.cer文件并随请求一起发送?以及

  • 更具体地说,我们为什么需要安装.pfx证书?为什么.cer不做这项工作


  • .cer文件包含证书。证书包含公钥。证书标识涉及一个加密操作,以显示您拥有与(公共)证书中的公钥匹配的秘密私钥。此私钥包含在.pfx文件中。

    “涉及一个加密操作,以显示”您是否有可能对此进行详细说明?我认为,身份识别涉及到将服务器获得的.cer与其拥有的.cer之一进行匹配。机密私钥用于在SSL握手数据上创建数字签名,然后服务器可以使用证书中包含的公钥对其进行验证。另见