C#客户端到SoapUI https模拟服务:无法为SSL/TLS安全通道与权限建立信任关系';本地主机:8083';

C#客户端到SoapUI https模拟服务:无法为SSL/TLS安全通道与权限建立信任关系';本地主机:8083';,c#,https,ssl-certificate,truststore,C#,Https,Ssl Certificate,Truststore,我有一个简单的C#程序,需要与第三方SOAPWeb服务(“FooService”)对话 我将WSDL导入VisualStudio并创建了一个服务引用。我的C#客户端代码如下所示: FooSoapClient webService = new FooSoapClient (); webService.Endpoint.Address = new EndpointAddress(cbWsUrl.Text); bool response = webService.PutDocumentCo

我有一个简单的C#程序,需要与第三方SOAPWeb服务(“FooService”)对话

我将WSDL导入VisualStudio并创建了一个服务引用。我的C#客户端代码如下所示:

  FooSoapClient webService = new FooSoapClient ();
  webService.Endpoint.Address = new EndpointAddress(cbWsUrl.Text);
  bool response = webService.PutDocumentCollection(docs);
我将相同的WSDL导入到SoapUI中,创建了一个模拟服务和一个模拟响应,我的C#客户端能够成功地与SoapUI通信:

问题:

这一切都适用于
http
。。。但是对于
https
失败

我按照本指南使用java
keytool
创建了我自己的小密钥库(
mock.keystore
),带有自签名证书(
别名soapui
),并将soapui配置为用于https(端口8083):

现在我的客户机失败了:

01/09/18 17:11:24: ERROR:Could not establish trust relationship for the SSL/TLS secure channel with authority 'localhost:8083'.
System.ServiceModel.Security.SecurityNegotiationException: Could not establish trust relationship for the SSL/TLS secure channel with authority 'localhost:8083'. 
---> System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. 
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
解决方法:

我添加了ServerCertificateValidationCallback以禁用所有证书检查:

ServicePointManager.ServerCertificateValidationCallback =
  (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) =>
  return true;
问题:

我应该怎么做才能让我的C#程序“信任”SoapUI,这样我就可以“连接”https了

有什么方法可以“导入”证书吗

换言之:

问:我需要做什么才能让我的独立C#应用程序在你向https网站“添加例外”时像浏览器一样工作


注意:没有任何类型的身份验证:我只是尝试使用https连接到SoapUI。

如果您使用自签名证书进行测试,您可以将其导入将运行应用程序的用户的受信任根证书颁发机构的存储中,并且Windows和其他应用程序都会将其视为受信任的.NET。
在WCF文档中的以下文章中,您将获得如何安装证书的更详细指南

只需在回调中自己验证证书(例如,检查哈希是否匹配SoapUI证书的哈希)。不要只为每个证书返回true.@Evk-你不明白。我试图完全避免使用ServerCertificateValidationCallback。我不应该“按程序”做任何事情。我应该能够在环境中配置证书,这样C#代码就可以“正常工作”。我认为AlesD的建议听起来很有希望。那么你的措辞有点混乱(大写字母表示我不喜欢你回拨的“所有”方面,并想改变它)。但是,是的,将证书添加到受信任的根目录中是一个不错的选择。你的回答可能听起来“显而易见”。。。但这正是我想要的。让我试试。如果有效,我会“接受”它。