У меня есть экземпляр httpd (версия 2.0), которая использует mod_proxy для преобразования входящих запросов HTTP к https. Моя проблема состоит в том, что мне нужен мой прокси для соединения с сервером, который только поддерживает Клиент SSLv3/TLSv1, Привет квитирующий.
Как тест, я попытался вызвать 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.
Не используйте старые версии!