主要就是我需要做证书验证,证书服务我已经做好,但是按照下面的作的时候出了些问题,
我现在执行这一句时:
X509Certificate x509 = X509Certificate.CreateFromCertFile(@"e:\yyy.cer");
提示
未处理的“System.Security.Cryptography.CryptographicException”类型的异常出现在 mscorlib.dll 中其他信息:无法将输入数据作为有效证书编码。

解决方案 »

  1.   

    参照文档:
    ms-help://MS.NETFrameworkSDK.CHS/cpguidenf/html/cpconsecuringaspnetwebservices.htm客户证书身份验证“客户证书”提供了一种安全的身份验证机制,这是因为它要求客户端将一个标识该客户端的电子文档使用 SSL 连接发送到 Web 服务器,该电子文档叫做客户证书。SSL 连接确保当通过网络发送包含在客户证书中的客户端凭据时,对客户端凭据进行加密。使用客户端发送的加密密钥和 Web 服务器提供的密钥的组合对客户端和 Web 服务器之间的通讯进行加密。一旦建立了通讯,只有客户端和服务器计算机可以使用该 SSL 连接互相通讯。可以从证书颁发机构获得客户证书,证书颁发机构既可以是 Web 服务器本身,又可以是客户端和服务器之间受信任的中介。一旦获得了证书,并且已配置 Web 服务器以接受客户证书,当调用 XML Web services 时,客户端便可以通过 SSL 连接将客户证书发送到 Web 服务器。有关客户端证书的更多详细信息,请参阅 IIS 文档。为客户证书身份验证配置 XML Web services下面的列表是如何配置 IIS 以对使用客户证书的客户端进行身份验证的概述。有关详细信息,请参阅 IIS 文档。 安装 SSL。 
    配置 Web 应用程序以接受客户证书。 
    修改配置文件,为 XML Web services 指定 Windows 身份验证。 
    将配置文件中 authentication XML 元素的 mode 属性设置为“Windows”。有关如何配置配置文件的详细信息,请参阅 ASP.NET 配置。以下代码示例修改配置文件以使用 Windows 身份验证。 // Fragment of a web.config file.     
    <authentication mode= "Windows">
    </authentication>
    将客户端凭据传递到使用 Windows 身份验证的 XML Web services 创建 XML Web services 的代理类的新实例。如果尚未生成代理类,请参阅创建 XML Web services 代理以了解详细信息。 
    创建 X509Certificate 的新实例。 
    调用 CreateFromCertFile 方法,从文件加载客户证书。 
    客户端可以从受信任的证书颁发机构获取客户端证书文件。有关详细信息,请参阅 IIS 文档。 将 X509Certificate 添加到代理类的 ClientCertificates 集合。 
    下面的代码示例演示 XML Web services 客户端如何使用客户证书传递其凭据。使用 CreateFromCertFile 方法从文件加载 Web 服务器发出的客户证书,然后将其添加到代理类的 ClientCertificates 属性。 [Visual Basic]
    ' Instantiate proxy class to a Bank XML Web service.
    Dim bank As BankSession = new BankSession()' Load the client certificate from a file.
    Dim x509 As X509Certificate = X509Certificate.CreateFromCertFile("c:\user.cer")' Add the client certificate to the ClientCertificates property
    ' of the proxy class.
    bank.ClientCertificates.Add(x509)' Call the method on the proxy class, which requires authentication
    ' using client certificates.
    bank.Deposit(500)
    [C#]
    // Instantiate proxy class to a Bank XML Web service.
    BankSession bank = new BankSession();// Load the client certificate from a file.
    X509Certificate x509 = X509Certificate.CreateFromCertFile(@"c:\user.cer");// Add the client certificate to the ClientCertificates property
    // of the proxy class.
    bank.ClientCertificates.Add(x509);// Call the method on the proxy class, which requires
    // authentication using client certificates.
    bank.Deposit(500);