一般情况下那个pfx是客户端证书,服务端要验证它;而jks是服务端证书链,客户端用它来验证服务端。
试下在请求前通过下面来设置让客户端忽略服务端证书的检查,就应该不需要jks了ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;

解决方案 »

  1.   


    我有这句代码。
    ServicePointManager.ServerCertificateValidationCallback += ValidateServerCertificate;  public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
            {        
                     return true;
             } 
      

  2.   

    那仅使用pfx证书的时候请求是什么结果呢
      

  3.   

    http://stackoverflow.com/questions/527610/how-can-i-create-a-pfx-file-from-a-java-keystore
    http://teddyhai.blogspot.com/2009/06/how-to-convert-java-jks-keystore-to.html
    也有把jks转成pfx的办法,不过一般客户端的证书应该就是一个。
      

  4.   


    我只是用pfx 到“   HttpWebResponse response = (HttpWebResponse)request.GetResponse();  ”抛异常 ,异常为“System.Net.WebException: 远程服务器返回错误: (500) 内部服务器错误”
    我查询这个错误,有说参数问题。但是参数我对比过没有问题。
      

  5.   

    现在报如下错误。怀疑安全证书有问题。但是使用java实例调用没有问题。没有头绪啊。。
    {System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效。
      

  6.   

    忙乎2天。几乎要放弃的情况下解决了问题。详细说下。
    调用的是java开发的接口(跟开发语言无关)并需要安全证书。一开始对方提供了两个文件*.pfx和*.jks。对方提供的demo中对两个文件都进行了加载。在jks上也走了很多弯路。一开始我只加载了pfx但是不好使,又研究jks。最后把jks转成pfx。妈的,最后调试成功后。只使用pfx,不使用jks也好使。不管它了说具体的。
     开发工具vs2010 ,winform 程序调用普通接口,使用“添加服务引用”就可以使用了。但是这次需要使用“添加web引用”(我就是一开始使用服务引用后不好使,使用了post方式调用接口。最后使用web引用好使的)。vs2010该引用在“添加服务引用”左下角“高级中”。下面是具体代码: private void cs()
    {
    //引用实例
         csService sc = new csService();            
                    //主要添加这句。验证回调证书。每次返回true
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback
    (ValidateServerCertificate);
                   string path = Application.StartupPath + "\\*.pfx";
                    //加载证书
           X509Certificate cerCaiShang = new X509Certificate(path, "1");                
                   int aaa= sc.ClientCertificates.Add(cerCaiShang);
                   string s = sc.cs("1", "1", "1");
    }
    //委托每次返回true
         public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors
    sslPolicyErrors)
            {        
                    return true;
            } 以上代码就搞定。使用post最后也没好使。还他妈写一屁眼子代码。希望对大家有用。最后谢谢所有回复的,朋友。
    分散了