Я применил исправление POODLE для Apache через SSLProtocol All -SSLv2 -SSLv3
в ssl.conf
файл для нашего сервера Apache, но у меня проблемы с CAC Client аутентификация через SSLVerifyClient require
.
Я подтвердил, установил ли я SSLVerifyClient none
к нашему веб-приложению можно получить доступ через HTTPS, и он использует правильный протокол TLSv1, но как только я установил SSLVerifyClient require
(что необходимо, потому что наше веб-приложение поддерживает CAC). Я получаю page cannot be displayed
в IE (в IE отключены SSLv2 и SSLv3, но включен TLS1.0-3).
Клиент - это 32-разрядная версия Windows 7 с IE 8. Сервер - Windows 2003 SP2.
Я сделал захват пакетов между клиентом и сервером. Первое приветствие клиента предназначено для TLSv1.2, затем отправляется уведомление о закрытии фатальной ошибки.
Поскольку мой сервер не поддерживает TLSv1.1 или TLSv1.2, для TLSv1 отправляется сообщение Client Hello. Процесс продолжается до запроса сертификата клиента, сервер Hello Done, затем клиент отправляет еще одно уведомление о закрытии фатальной ошибки.
Экранная крышка здесь: http://i.imgur.com/y3GvjlP.jpg
Вот полные потоки TCP:
Первый поток, который отправляется клиенту, пытается согласовать TLSv1.2, сервер отклоняет его, поскольку он не поддерживает, и отправляет уведомление о закрытии. Второй поток отправляет клиенту привет через TLSv1.0, отправляет и т. Д. Но это от одного единственного подключения к веб-серверу ..
1-й поток:
2-й поток:
Подключение осуществляется через TLSv1, как я подтвердил из https://www.ssllabs.com/ssltest/. Сервер даже соглашается на шифр TLS ..
Chrome работает нормально даже с отключенными SSLv2 и SSLv3 через chrome.exe --ssl-version-min=tls1
Также эта версия Apache использует mod_ossl
В
mod_ossl
модуль обеспечивает надежную криптографию для Oracle HTTP Server. Этот модуль Oracle является подключаемым модулем к Oracle HTTP Server, который позволяет серверу использовать SSL. Он очень похож на модуль OpenSSL,mod_ssl
. Вmod_ossl
Модуль основан на реализации SSL Oracle, которая поддерживает SSL версии 3 и TLS версии 1, и основан на технологиях Certicom и RSA Security.
Я не знаю, как обновить его для поддержки TLS v1.1 и TLS v1.2, так как я использую последнюю версию OHS 11g от Oracle, а это специальный модуль, созданный Oracle.
ОБНОВИТЬ:
Я включил уровень журнала отладки в журналах OHS Apache. Теперь я получаю следующие ошибки при использовании IE для попытки доступа к веб-приложению:
[Mon Nov 10 08:16:05 2014] [error] [client X.X.X.X] OHS:2079 nzos handshake error, nzos_Handshake returned 28858(server X.X.X.X:443, client X.X.X.X)
[Mon Nov 10 08:16:05 2014] [error] OHS:2171 NZ Library Error: SSL protocol error [Hint: the client probably speaks HTTPS over HTTP protocol]
[Mon Nov 10 08:16:05 2014] [info] [client X.X.X.X] OHS:2073 Connection to child 107 closed with standard shutdown(server X.X.X.X:443, client X.X.X.X)
[Mon Nov 10 08:16:05 2014] [info] [client X.X.X.X] Connection to child 107 established (server X.X.X.X:443)
[Mon Nov 10 08:16:06 2014] [info] [client X.X.X.X] OHS:2079 nzos handshake error, nzos_Handshake returned 28864(server X.X.X.X:443, client X.X.X.X)
[Mon Nov 10 08:16:06 2014] [info] OHS:2171 NZ Library Error: SSL IO error [Hint: the client stop the connection unexpectedly]
[Mon Nov 10 08:16:06 2014] [info] [client X.X.X.X] OHS:2073 Connection to child 107 closed with standard shutdown(server X.X.X.X:443, client X.X.X.X)
Кто-нибудь знает, как исправить это на Oracle HTTP Server (OHS) Apache 2.2.22.0 ??
Вот отрывок из моих ssl.conf
файл:
###################################################################
# Oracle HTTP Server mod_ossl configuration file: ssl.conf #
###################################################################
# OHS Listen Port
Listen 443
<IfModule ossl_module>
##
## SSL Global Context
##
## All SSL configuration in this context applies both to
## the main server and all SSL-enabled virtual hosts.
##
#
# Some MIME-types for downloading Certificates and CRLs
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
# Pass Phrase Dialog:
# Configure the pass phrase gathering process.
# The filtering dialog program (`builtin' is a internal
# terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog builtin
# Inter-Process Session Cache:
# Configure the SSL Session Cache: First the mechanism
# to use and second the expiring timeout (in seconds).
SSLSessionCache "shmcb:${ORACLE_INSTANCE}/diagnostics/logs/${COMPONENT_TYPE}/${COMPONENT_NAME}/ssl_scache(512000)"
SSLSessionCacheTimeout 300
# Semaphore:
# Configure the path to the mutual exclusion semaphore the
# SSL engine uses internally for inter-process synchronization.
<IfModule mpm_winnt_module>
SSLMutex "none"
</IfModule>
<IfModule !mpm_winnt_module>
SSLMutex pthread
</IfModule>
##
## SSL Virtual Host Context
##
<VirtualHost *:443>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "${ORACLE_INSTANCE}/config/${COMPONENT_TYPE}/${COMPONENT_NAME}/htdocs/asset"
DirectoryIndex remagnum.html
ServerName TTSDS09083.TIMPO.OSD.MIL
# ServerAlias www.dummy-host.example.com
<IfModule ossl_module>
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate.
#SSLCipherSuite SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA
SSLCipherSuite ALL:+HIGH:-MEDIUM:-LOW:-SSLv2:-SSLv3
SSLProtocol All -SSLv2 -SSLv3
# Client Authentication (Type):
# Client certificate verification type and depth. Types are
# none, optional and require.
#SSLVerifyClient none
SSLVerifyClient require
# SSL Certificate Revocation List Check
# Valid values are On and Off
SSLCRLCheck Off
#Path to the wallet
SSLWallet "${ORACLE_INSTANCE}/config/${COMPONENT_TYPE}/${COMPONENT_NAME}/keystores/default"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars +ExportCertData
</FilesMatch>
<Directory "${ORACLE_INSTANCE}/config/${COMPONENT_TYPE}/${COMPONENT_NAME}/cgi-bin">
SSLOptions +StdEnvVars +ExportCertData
</Directory>
</IfModule>
</VirtualHost>
</IfModule>
SSLCipherSuite ALL: + HIGH: -MEDIUM: -LOW: -SSLv2: -SSLv3
Поскольку вы отключаете все шифры SSL 3.0 и поскольку TLS 1.0 и TLS 1.1 просто используют шифры SSL 3.0, а поскольку IE 8 не поддерживает TLS 1.2, общих шифров не будет. Вы, вероятно, найдете сообщения об этом в своих файлах журнала.
Обратите внимание, что атака POODLE - это недостаток конструкции протокола SSL 3.0, а не шифров SSL 3.0. Таким образом, вы должны отключать только протокол, а не шифры.
Кроме того, ваш текущий набор шифров включает очень опасные шифры, потому что он включает в себя шифры ADH, которые не требуют какой-либо формы идентификации сервера. С такими шифрами возможны атаки типа "злоумышленник посередине".
Изменить: в своем комментарии вы упоминаете, что клиент использует Windows 7. Windows 7 должна поддерживать TLS 1.2, но поскольку клиент, очевидно, не делал много обновлений в системе (в противном случае IE 8 не использовался бы), возможно, что там проблемы с IE 8 и TLS 1.2.