У меня есть экземпляр httpd (версия 2.0), который использует mod_proxy для преобразования входящих HTTP-запросов в https. Моя проблема в том, что мне нужен прокси-сервер для подключения к серверу, который поддерживает только подтверждение SSLv3 / TLSv1 Client Hello.
В качестве теста я пробовал принудительно использовать TLSv1 для всех возможных вариантов:
SSLProxyEngine On
SSLProxyProtocol TLSv1
SSLProxyCipherSuite TLSv1
Но я вижу, что httpd все еще пытается установить связь SSLv2. Я понимаю, что это было старое предполагаемое поведение для обратной совместимости для некоторых клиентов, но, насколько я могу судить, это должно было привести к более новому рукопожатию. Это предполагаемое поведение? Это может быть ошибка в моих старых модулях?
Нашел ответ, просмотрев источник httpd - httpd версии 2.0 не будет использовать квитирование SSLv3 / TLSv1 для каких-либо соединений, потому что он использует только SSLv2_client_method () или SSLv23_client_method () для создания своего контекста SSL.
Из ssl_engine_init.c:
if (protocol == SSL_PROTOCOL_SSLV2) {
method = mctx->pkp ?
SSLv2_client_method() : /* proxy */
SSLv2_server_method(); /* server */
ctx = SSL_CTX_new(method); /* only SSLv2 is left */
}
else {
method = mctx->pkp ?
SSLv23_client_method() : /* proxy */
SSLv23_server_method(); /* server */
ctx = SSL_CTX_new(method); /* be more flexible */
}
По Документация SSL, контекст сервера, созданный с помощью TLSv1_server_method (), не распознает методы SSLv2 *. Подтверждено, что более поздние версии httpd / mod_ssl работают должным образом, и сначала попробуйте SSLv3 / TLSv1.
Не используйте старые версии!