Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绕过无效的SSL证书错误.Net/c#_C#_Ssl - Fatal编程技术网

绕过无效的SSL证书错误.Net/c#

绕过无效的SSL证书错误.Net/c#,c#,ssl,C#,Ssl,我有一个开发系统,我正试图与第三方安全web服务通信 第三方向我提供了我在当地进口的证书。我已确保将证书添加到“受信任的根证书颁发机构”存储中。它似乎已正确导入,就好像我使用Chrome并尝试访问web服务WSDL文件中提到的其中一个服务URL一样,我首先得到一个弹出窗口,要求我确认要使用哪个证书(只有一个选项),然后它让我通过。但是,如果我随后使用相同的WSDL文件在Visual Studio中创建服务引用,并在代码中调用其中一个服务,我会收到一个错误消息“无法为具有权限的SSL/TLS建立安

我有一个开发系统,我正试图与第三方安全web服务通信

第三方向我提供了我在当地进口的证书。我已确保将证书添加到“受信任的根证书颁发机构”存储中。它似乎已正确导入,就好像我使用Chrome并尝试访问web服务WSDL文件中提到的其中一个服务URL一样,我首先得到一个弹出窗口,要求我确认要使用哪个证书(只有一个选项),然后它让我通过。但是,如果我随后使用相同的WSDL文件在Visual Studio中创建服务引用,并在代码中调用其中一个服务,我会收到一个错误消息“无法为具有权限的SSL/TLS建立安全通道”

理想情况下,当我进行webservice调用时,我会让VS确认证书,但鉴于这是一个开发系统,我也很乐意暂时忽略SSL错误

为此,我在代码中添加了以下内容,以及我指定的协议的变体(例如,仅指定SSL3,去掉SSL3等):

但无论我做什么,当我尝试进行服务调用时,仍然会出现SSL错误


如果有人对如何让VS接受证书有任何建议(正如Chrome所做的),或者,如何让代码暂时忽略SSL错误,以便我继续开发,非常感谢。

您是否使用此证书向第三方服务进行身份验证?您必须使用该服务通过弹出窗口一次。运行服务时使用的帐户是什么?你有以管理员身份运行的服务吗?然后让管理员运行一次应用程序,以便将证书存储为管理员信任的根证书,而不是注册表中的用户路径。@Adriani6证书安装在我的本地证书存储中,当我尝试使用Chrome访问第三方服务时,系统会要求我选择要连接的证书(相关证书是唯一可用的选项)。一旦我选择了该证书,我就可以访问Chrome中的服务。但是,当我从VS.@jdweng拨打服务电话时,该证书似乎没有被使用。我不确定我是否理解-该服务是第三方服务,它运行在我无权访问的外部服务器上。我尝试以普通用户和管理员的身份运行Chrome,并且我使用VS调试我正在编写的应用程序,但在所有情况下,当从VS调用web服务时,我仍然会遇到SSL异常。您说“尝试调用服务时出现SSL错误”。您在远程计算机上有一个Web服务器,但也可以在本地运行一个与远程计算机建立连接的服务。我假设服务调用是本地服务。调试此问题的正确方法是使用诸如wireshark或fiddler之类的嗅探器。使用Chrome捕获良好的连接。然后比较http从Chrome向您的应用程序发出的初始请求中的aders。使您的应用程序标题与Chrome标题完全相同。您是否使用此证书向第三方服务进行身份验证?您必须使用该服务通过弹出窗口一次。运行该服务时使用的帐户是什么?您是否以管理员身份运行该服务?然后让管理员运行一次应用程序,以便将证书存储为管理员信任的根证书,而不是注册表中的用户路径。@Adriani6证书安装在我的本地证书存储中,当我尝试使用Chrome访问第三方服务时,系统会要求我选择要连接的证书(相关证书是唯一可用的选项)。一旦我选择了该证书,我就可以访问Chrome中的服务。但是,当我从VS.@jdweng拨打服务电话时,该证书似乎没有被使用。我不确定我是否理解-该服务是第三方服务,它运行在我无权访问的外部服务器上。我尝试以普通用户和管理员的身份运行Chrome,并且我使用VS调试我正在编写的应用程序,但在所有情况下,当从VS调用web服务时,我仍然会遇到SSL异常。您说“尝试调用服务时出现SSL错误”。您在远程计算机上有一个Web服务器,但也可以在本地运行一个与远程计算机建立连接的服务。我假设服务调用是本地服务。调试此问题的正确方法是使用诸如wireshark或fiddler之类的嗅探器。使用Chrome捕获良好的连接。然后比较http应用程序的Chrome初始请求中的aders。使应用程序标题与Chrome标题完全相同。
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
               | SecurityProtocolType.Tls11
               | SecurityProtocolType.Tls12
               | SecurityProtocolType.Ssl3;
            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };