SSIS SecurityNegotiationException: не удалось установить безопасный канал для SSL/TLS (без сертификата)

Я интегрируюсь с веб-сервисом через SSIS. Я продолжаю получать сообщение об ошибке, похожее на сбой связи с сертификатом.

Когда я запускаю точно такой же код только в консоли, он работает нормально.

Службе не требуется сертификат, так что это проблема SSIS? Я новичок в SSIS, поэтому это может быть основной проблемой.

Исключение:

System.ServiceModel.Security.SecurityNegotiationException: Could not establish secure channel for SSL/TLS with authority 'myurl'. ---> 

System.Net.WebException: запрос был прерван: не удалось создать безопасный канал SSL/TLS

Код ниже:

    var wsBinding = new WSHttpBinding(SecurityMode.Transport);
    wsBinding.Name = "wsHttpBinding_GlobalCredentials";
    wsBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;

    
    System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };

    EndpointAddress endpointAddress = new EndpointAddress("https://myurl/myservice.svc/Soap12_NoAuth");


    using (GlobalCredentialsClient globalCredentialsClient = new GlobalCredentialsClient(wsBinding, endpointAddress))
    {
        try
        {
            globalCredentialsClient.ChannelFactory.Credentials.ServiceCertificate.SslCertificateAuthentication = new X509ServiceCertificateAuthentication();                    
            globalCredentialsClient.ChannelFactory.Credentials.ServiceCertificate.SslCertificateAuthentication.CertificateValidationMode = X509CertificateValidationMode.None;

            
            GlobalAccount checkCredentialsResult = globalCredentialsClient.CheckCredentials(username, password);

            MessageBox.Show("Result: " + checkCredentialsResult.OrgID.ToString());

            Dts.Variables["sOrgName"].Value = checkCredentialsResult.Created;

            globalCredentialsClient.Close();
        }
        catch (CommunicationException ce)
        {
            MessageBox.Show("Comms exc " + ce.ToString());
            globalCredentialsClient.Abort();

        }
    }
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
2 600
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто подозрение, что это может быть несоответствие между версиями TLS. Какое приложение .NET дает сбой?

Вы можете попробовать установить версию TLS прямо перед вызовом API.

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12

или

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11

Не используйте TLS11, он отключен и не будет работать.

jdweng 18.12.2020 12:58

@jdweng Я полностью согласен. Хотя иногда вам нужно поддерживать устаревшие системы

Teddy Higgins 18.12.2020 16:20

Пять лет назад индустрия решила отказаться от TLS 1.0/1.1, потому что хакеры смогли расшифровать сообщения. Наконец, в июне этого года Microsoft выпустила обновление безопасности на сервере, отключившем TLS 1.0/1.1. Поскольку обновление безопасности было выпущено, все были вынуждены обновиться до 1.2/1.3, если они не сделали этого за последние 5 лет. Маловероятно, что кто-то все еще использует TLS 1.0/1.1. Выход из TLS 1.1 может привести к возникновению исключений при сбое.

jdweng 18.12.2020 16:29

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