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

时间:2014-08-11 23:43:23

标签: 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");
  Request.ClientCertificates.Add(Cert);
  Request.UserAgent = "Client Cert Sample";
  Request.Method = "GET";
  HttpWebResponse Response = (HttpWebResponse) Request.GetResponse();

但是,除非您在证书管理器内的当前用户的个人文件夹中安装了证书,否则此代码不起作用。更具体地说,它仅在我安装了 .pfx 证书时才有效,而不是 .cer

根据我的理解,客户端证书仅用于身份验证而不是加密,对吧?所以,

  1. 为什么我们需要安装证书?为什么我的程序不能从该位置选择.cer文件并将其与请求一起发送?而且,

  2. 同样,更具体地说,为什么我们需要安装 .pfx 证书?为什么 .cer 不能胜任这项工作?

1 个答案:

答案 0 :(得分:1)

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