2017-06-12 40 views
0

我最近遇到了一个问题,我试图从网站获取资源。该网站已与自签名证书关联。当我通过WebRequest请求资源时,它会抛出以下错误:处理自签名证书的最佳方式

Could not establish trust relationship for the SSL/TLS secure channel

我确实在寻找解决方案。我不想禁用完全检查证书。总之,我无法找到令人信服的答案。请让我知道处理自签名证书的最佳方式。

+0

该错误表示底层TCP客户端无法验证服务器的真实性。涉及证书供应的做法有多种不同的方法。例如,将自签名证书加载到您的个人存储中以使用Peer Trust验证。 – Biscuits

+0

你能解释一下吗? – Sasu

+0

在典型的情况下,在启用TLS的情况下,服务器在建立安全连接之前在握手过程中向客户端提供证书。该证书允许客户端在客户端接受连接并向服务器发送潜在的敏感信息之前加密验证服务器是否可信(以防欺骗)。您客户端的服务器验证可以自行决定跳过(不推荐)。 – Biscuits

回答

0

首先,重要的是要知道,这个例外是通过检查站点认证信任来阻止您访问可能的假Web服务器。

自签名证书可以信任,但你必须安装它的根CA系统将信任CA存储

它你坚持相信由自签名证书,而无需安装它的根CA到受信任的CA存储签名的服务器,你可以强制检查机制这个相信任何东西:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

或者更好的办法将此强制信任仅设置为HttpWebRequest实例:

var request = (HttpWebRequest)HttpWebRequest.Create(myUri); 
request.ServerCertificateValidationCallback = delegate { return true; }; 
+0

我正在使用ASP .NET 4.0。我认为我不能这样做。 request.ServerCertificateValidationCallback = delegate {return true; }; – Sasu