首页 新闻 会员 周边 捐助

我在集成易付宝支付接口未能创建 SSL/TLS 安全通道设置ServerCertificateValidationCallback

0
悬赏园豆:10 [待解决问题]

      

未能为 SSL/TLS 安全通道建立信任的解决办法

1:先加入命名空间

using System.Net.Security;   
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;

2:再重载CheckValidationResult方法,返回true

public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)         {

            //直接确认,否则打不开    

            return true;

        }

3:然后在HttpWebRequest req =(HttpWebRequest) WebRequest.Create(URL)前面加上如下一行代码

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);//验证服务器证书回调自动验证

疑问:这样虽然解决了未能创建 SSL/TLS 安全通道,但是安全吗?它是直接让证书的回调验证返回true了?

大熊维尼的主页 大熊维尼 | 初学一级 | 园豆:194
提问于:2014-01-07 15:42
< >
分享
所有回答(2)
0

安全,当然你要是不放心呢,就把证书验证一次。

Launcher | 园豆:45050 (高人七级) | 2014-01-08 16:20
0

你要了解证书的验证流程就很好理解你需要不需要在ServerCertificateValidationCallback 中验证了。

比如张三给你一个客户端证书,你怎么知道这个证书是不是真的是张三给你的,还是李四冒认了张三的身份给你的客户端证书呢,这时候就需要在ServerCertificateValidationCallback中对客户端证书的真伪到CA进行是否是授信机构校验了,但是一般如果你明知道这个证书就是授信机构颁发给你的,就可以像你的代码里写的一样不去确认直接返回true

[星辰大海] | 园豆:204 (菜鸟二级) | 2016-11-21 17:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册