我有一个.NET应用程序,我想用作客户端来调用SSL SOAP Web服务。已为我提供了名为foo.pfx的有效客户端证书。证书本身上有一个密码。

我已将证书放在以下位置:C:\certs\foo.pfx
要调用Web服务,我需要附加客户端证书。这是代码:

public X509Certificate GetCertificateFromDisk(){
    try{

       string certPath = ConfigurationManager.AppSettings["MyCertPath"].ToString();
       //this evaluates to "c:\\certs\\foo.pfx". So far so good.

       X509Certificate myCert = X509Certificate.CreateFromCertFile(certPath);
       // exception is raised here! "The specified network password is not correct"

       return cert;

     }
    catch (Exception ex){
        throw;
     }
}

听起来好像是.NET应用程序尝试读取磁盘的异常。方法CreateFromCertFile是静态方法,应该创建X509Certificate的新实例。该方法不会被覆盖,只有一个参数:path。

当我检查异常时,我发现:
_COMPlusExceptionCode = -532459699
Source=mscorlib

问题:是否有人知道异常原因是“指定的网络密码不正确”?

最佳答案

原来,我试图从.pfx而不是.cer文件创建证书。

学过的知识...

  • .cer文件是二进制格式的X.509证书。它们是DER encoded
  • .pfx文件是容器文件。也是DER编码的。它们不仅包含证书,还包含加密形式的私钥。
  • 关于c# - X509Certificate.CreateFromCertFile-指定的网络密码不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/899991/

    10-14 16:39