Я использую TIdHTTP для удобного получения запросов. В основном это работает хорошо, но на некоторых сайтах я не могу установить соединение, даже если пробую различные настройки. Я попытался выполнить ответ здесь
Чтобы по-настоящему подключиться к «любому» серверу, вам нужно будет обнаружить ошибку «неправильной версии» и повторить попытку с другой конкретной конфигурацией Method / SSLVersions. К сожалению, ответ «неправильная версия» не включает фактическую версию сервера, поэтому вам придется использовать метод проб и ошибок. Если SSLv23 не работает, попробуйте TLSv1_2. Если это не удается, попробуйте TLSv1_1. Если это не поможет, попробуйте TLSv1. Если это не удается, попробуйте SSLv3.
Но это не помогло.
Исключение - «Ошибка соединения с SSL. Ошибка: 14094410: подпрограммы SSL: SSL3_READ_BYTES: сбой подтверждения подтверждения sslv3»
Или непонятные процедуры SSL: SSL3_GET_RECORD: неправильный номер версии. Но я не могу точно решить SSL3_READ_BYTES: sslv3 alert
Пример кода, который воспроизводит проблему и примеры веб-сайтов:
begin
httpSender := TIdHTTP.Create(nil);
SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
SSL.SSLOptions.Method := sslvTLSv1; //or sslvSSLv3, sslvTLSv1,sslvTLSv1_1
//or
//SSL.SSLOptions.Method := sslvSSLv23;
//SSL.SSLOptions.SSLVersions := [sslvSSLv2, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
httpSender.IOHandler := SSL;
//exceptions here
httpSender.Get('https://www.linux.org/');
//httpSender.Get('https://st.deviantart.net/');
//httpSender.Get('https://c.tcdn.co/fa4/aa2/fa4aa23e-f55b-11e6-ba87-040157cdaf01/channel256.png');
end;
Итак, как мне настроить TIdHTTP для подключения к этим веб-сайтам?
Я использую Delphi XE8 и openssl 1.0.1e
1 ответ
Ни одному из сайтов, о которых идет речь, не требуется более низкая версия протокола TLS. Все они прекрасно могут взаимодействовать с TLS 1.2, а иногда даже с TLS 1.3. Но все эти сайты работают только в том случае, если клиент использует расширение SNI TLS для объявления имени целевого хоста в рамках рукопожатия TLS.
Таким образом, более вероятно, что проблема на самом деле заключается в отсутствии расширения SNI. Кажется, это известная проблема. См. TIdHTTP и TLS SNI не работает для получения дополнительной информации и способов решения проблема.
Похожие вопросы
Связанные вопросы
Новые вопросы
delphi
Delphi - это язык для быстрой разработки собственных приложений для Windows, macOS, Linux, iOS и Android с использованием Object Pascal. Название относится к языку Delphi, а также к его библиотекам, компилятору и IDE, которые используются для помощи в редактировании и отладке проектов Delphi.