Не удалось установить безопасный канал для SSL / TLS для вызова SOAP
Наш главный сервер обращается к мыльной веб-службе через https на нескольких различных серверах, чтобы подтвердить, что транзакция завершена.
Код представляет собой dotnet 3.5 (vb) и работает для различных сервисов обратного вызова, которые мы настроили до тех пор, пока мы не перенесли новую в производство, и она отказывается общаться, выдавая следующую ошибку:
Unhandled Exception: System.ServiceModel.Security.SecurityNegotiationException:
Could not establish secure channel for SSL/TLS with authority 'www.xyzzy.com'.
---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
Соответствующий фрагмент кода выглядит так:
Dim epAddr As New System.ServiceModel.EndpointAddress(sys.CallbackAddress)
Dim bind As New System.ServiceModel.BasicHttpBinding(ServiceModel.BasicHttpSecurityMode.Transport)
_svc = New CallbackSvc.XyzzyCallbackSoapClient(bind, epAddr)
Со своего личного ноутбука (WinXP) я могу запустить код, и он без проблем подключается к новому серверу.
На главном сервере (который вызывает все службы обратного вызова) (Windows Server Enterprise Service Pack 1) код всегда приводит к вышеупомянутой ошибке SSL.
После поиска этой проблемы я попытался добавить следующую строку (конечно, не подходит для производства, но я хотел проверить):
System.Net.ServicePointManager.ServerCertificateValidationCallback = Function(se As Object, cert As System.Security.Cryptography.X509Certificates.X509Certificate, chain As System.Security.Cryptography.X509Certificates.X509Chain, sslerror As System.Net.Security.SslPolicyErrors) True
Результат был таким же. Ошибка SSL все еще произошла.
В других местах предполагается, что корневой сертификат не был правильно установлен на вызывающем компьютере, но и новый сервер, и старые серверы обратного вызова используют сертификаты, выпущенные Go Daddy, поэтому я не думаю, что это так.