一般情况下那个pfx是客户端证书,服务端要验证它;而jks是服务端证书链,客户端用它来验证服务端。
试下在请求前通过下面来设置让客户端忽略服务端证书的检查,就应该不需要jks了ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
试下在请求前通过下面来设置让客户端忽略服务端证书的检查,就应该不需要jks了ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
我有这句代码。
ServicePointManager.ServerCertificateValidationCallback += ValidateServerCertificate; public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
http://teddyhai.blogspot.com/2009/06/how-to-convert-java-jks-keystore-to.html
也有把jks转成pfx的办法,不过一般客户端的证书应该就是一个。
我只是用pfx 到“ HttpWebResponse response = (HttpWebResponse)request.GetResponse(); ”抛异常 ,异常为“System.Net.WebException: 远程服务器返回错误: (500) 内部服务器错误”
我查询这个错误,有说参数问题。但是参数我对比过没有问题。
{System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效。
调用的是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最后也没好使。还他妈写一屁眼子代码。希望对大家有用。最后谢谢所有回复的,朋友。
分散了