为什么在使用客户端证书进行调用之前,我们需要在Windows上安装.pfx证书(而不是.cer)?

4

我写了一个小型控制台应用程序,使用客户端证书向服务器发起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个回答

1
“cer”文件包含证书。证书包含公钥。使用证书进行身份验证需要进行加密操作,以证明您拥有与(公共)证书中的公钥匹配的秘密私钥。此私钥包含在“pfx”文件中。”

“包括加密操作以显示”是什么意思?你能详细说明一下吗?我认为身份验证涉及将服务器获取的 .cer 与其持有的某个 .cer 进行匹配。 - GrowinMan
秘密私钥用于在SSL握手的数据上创建数字签名,服务器可以使用证书中包含的公钥验证该签名。另请参见http://security.stackexchange.com/questions/24577/client-certificate-in-ssl-handshake-insecure。 - Steffen Ullrich

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