Почему я получаю ошибку «ошибка безопасности 12175» с помощью TNetHttpRequest

#delphi

#delphi

Вопрос:

Я использую TNetHttpRequest и TNetHTTPClient для отправки post-данных на URL-адрес API следующим образом:

 Params := TMultiPartFormData.Create;
Params.AddFile('file_upload', 'c:myfile.txt','application/octet-stream');
NetHTTPRequest1.Post('https://myurl.com', Params);
  

Эта работа завершается в Windows 10, но в новой версии Windows 7 Home я получаю ошибку

Ошибка отправки данных (12175) Произошла ошибка безопасности

Я посмотрел номер ошибки Microsoft ЗДЕСЬ

ОШИБКА_WINHTTP_SECURE_FAILURE

  12175
  

Одна или несколько ошибок были обнаружены в сертификате уровня защищенных сокетов (SSL), отправленном сервером. Чтобы определить, какой тип ошибки был
обнаружен, проверьте наличие
уведомления WINHTTP_CALLBACK_STATUS_SECURE_FAILURE в функции обратного вызова состояния. Для получения дополнительной информации см.
WINHTTP_STATUS_CALLBACK.

Но я действительно не знаю, как вызвать эти функции обратного вызова или что вызывает эту ошибку?

Комментарии:

1. Когда вы вводите свой URL https://myurl.com -адрес в браузере, сообщает ли он об ошибке сертификата?

2. @J.R. Нет……..

Ответ №1:

Я решил это, сняв галочку с помощью SSL2 и SSL3 из NetHTTPClient1 и я использовал только TLS

Комментарии:

1. И? Это решило вашу проблему? Если да, пожалуйста, укажите это. В противном случае, если вы просто указываете то, что вы пробовали, но это не сработало, тогда это должно было быть опубликовано в качестве комментария вместо ответа.

2. конечно, это сработало, поэтому я опубликовал ответ!

Ответ №2:

Я столкнулся с той же ошибкой в Windows 7 Pro, которую легко воспроизвести с помощью Delphi 10.3. Пример «HttpAsyncDownload».

Я протестировал скомпилированное приложение в Windows 10, где оно работает безупречно.

Наконец, я нашел следующую страницу, которая решила проблему для меня: https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi

Вкратце, поддержка безопасности транспортного уровня (TLS) 1.1 и TLS 1.2 активирована для Windows 7. Я использовал «простое исправление», которое позволяет это в масштабах всей системы, а также для Internet Explorer.

Наконец, приведенный выше пример приложения «HttpAsyncDownload» работает в Windows 7 Pro безупречно.