Назад | Перейти на главную страницу

Заставить httpd 2.0 mod_ssl использовать TLSv1 для прокси-рукопожатий

У меня есть экземпляр 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.

Не используйте старые версии!