Не удалось создать безопасный канал SSL/TLS от плагина к веб-сервису

У меня проблема с моим плагином, когда я пытаюсь использовать метод из справочника сервиса. У меня есть клиент, который отправляет параметры в веб-сервис, который затем отправляет эти параметры в мой плагин, а затем я должен взять эти параметры и отправить их в веб-сервис, используя метод веб-ссылки. Для доступа к веб-сервису мне нужно использовать сертификат, подписанный компанией, которой принадлежит последний веб-сервис. Код, который я использую, это:

BasicHttpsBinding binding = new BasicHttpsBinding
            {
                Security = new BasicHttpsSecurity
                {
                    Transport = new HttpTransportSecurity
                    {
                        ClientCredentialType = HttpClientCredentialType.Certificate
                    }
                }
            };

UploaderServiceClient client = new UploaderServiceClient(binding, new EndpointAddress(args.EndPoint));

client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocaMachine, StoreName.My, X509FindType.FindBySerialNumber, args.SerialNum);

client.approveTransportDocument(appC, FileDesc);

После того, как я использую этот код, я получаю исключение:

The request was aborted: Could not create SSL/TLS secure channel.

Последний веб-сервис работает нормально, и сертификат действителен, потому что, если я использую тот же код в форме, он работает нормально. РЕДАКТИРОВАТЬ: я добавляю исключение, которое я получаю, может быть, это поможет:

System.ServiceModel.Security.SecurityNegotiationException: Не удалось установить безопасный канал для SSL/TLS с полномочиями "imas-ws.vmi.lt". ---> System.Net.WebException: запрос был прерван: не удалось создать безопасный канал SSL/TLS. в System.Net.HttpWebRequest.GetResponse() в System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) --- Конец внутренней трассировки стека исключений ---

Трассировка стека сервера: в System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, запрос HttpWebRequest, HttpAbortReason abortReason)
в System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply (тайм-аут TimeSpan) в System.ServiceModel.Channels.RequestChannel.Request(сообщение сообщения, MessageSource ReRevice службы повторного запроса TimeSpan., Тайм-аут TimeSpan) в System.ServiceModel.Channels.ServiceChannel.Call (Строковое действие, Логическое одностороннее, Операция ProxyOperationRuntime, Object[] ins, Object[] outs, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannelProxy.InvoessdCallallCallCallallCMS (IMC), Операция ProxyOperationRuntime) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (сообщение IMessage)

Исключение, переброшенное в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData.IUR.It в Int32) UploaderService.submitTransportDocument(TransportDocument LocalTransportDocument, ContextDformation для FileDescription, AdditionalContext AdditionalContext) по адресу Eur_Iz.Ie.UploaderServiceClient.submitTransportDocument(LocalDransmentDirectory, TransportDocument LocalTransportDocument, FileDescription contextInformation, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\DDDDDDDDDDDDWD \DWR \ \ \\\\\\\\) строка 3295 в Eur_Iz.ClientPlugin.DataHandling(аргументы IServicePluginArgs)

2 ответа

Решение

Нашел ответ, проблема была в том, что я должен был дать разрешение веб-сервису использовать сертификат. Вот ссылка, которая помогла мне: https://serverfault.com/questions/131046/how-to-grant-iis-7-5-access-to-a-certificate-in-certificate-store/132791

Это может быть что-то с сертификатом клиента или сертификатом сервера. Это могут быть проблемы доверия (сертификаты CA отсутствуют на клиенте или сервере).

Включение журнала CAPI2 в журнале событий может дать вам ответ, почему Could not create SSL/TLS secure channel. Журнал CAPI2 по умолчанию отключен. Когда вы включите его, попробуйте сделать запрос еще раз. Должны быть некоторые события ошибок, которые будут содержать полезную информацию о причине. Журнал событий CAPI2

Другие вопросы по тегам