SSLProtocol All -SSLv2 -SSLv3
我通过 Apache 服务器的文件应用了 POODLE 修复程序ssl.conf
,但遇到了问题CAC 客户端身份验证通过SSLVerifyClient require
。
我已经确认如果我设置SSLVerifyClient none
我们的 Web 应用程序,就可以通过 HTTPS 访问并使用正确的 TLSv1 协议,但是一旦我设置SSLVerifyClient require
(这是必要的,因为我们的 Web 应用程序启用了 CAC),我就会page cannot be displayed
在 IE 中得到一个(IE 已禁用 SSLv2 和 SSLv3,但启用了 TLS1.0-3)。
客户端是带有 IE 8 的 Windows 7 32 位。服务器是 Windows 2003 SP2。
我已经在客户端和服务器之间进行了数据包捕获。第一个客户端问候是针对 TLSv1.2 的,然后发送了“致命错误关闭通知”。
由于我的服务器不支持 TLSv1.1 或 TLSv1.2,因此会为 TLSv1 发送客户端问候。该过程一直进行到客户端证书请求服务器问候完成,然后客户端发送另一个致命错误关闭通知。
屏幕截图在此:https://i.stack.imgur.com/Cy8J6.jpg
以下是完整的 TCP 流:
第一个流发送客户端问候并尝试协商 TLSv1.2,服务器拒绝,因为它不支持并发送关闭通知。第二个流通过 TLSv1.0 发送客户端问候等。但这是从一个到 Web 服务器的单一连接发送的。
第一流:
第二流:
我已经从以下地址验证过,连接处于 TLSv1 状态https://www.ssllabs.com/ssltest/。服务器甚至同意 TLS 密码。
即使通过以下方式禁用 SSLv2 和 SSLv3,Chrome 仍能正常工作chrome.exe --ssl-version-min=tls1
此版本的 Apache 还使用mod_ossl
该
mod_ossl
模块为 Oracle HTTP Server 启用强加密。此 Oracle 模块是 Oracle HTTP Server 的一个插件,可使服务器使用 SSL。它与 OpenSSL 模块非常相似mod_ssl
。该mod_ossl
模块基于 Oracle 的 SSL 实现,支持 SSL 版本 3 和 TLS 版本 1,并基于 Certicom 和 RSA 安全技术。
我不知道如何升级它以支持 TLS v1.1 和 TLS v1.2,因为我使用的是 Oracle 最新的 OHS 11g 版本,这是 Oracle 制作的定制模块。
更新:
我已在 OHS Apache 日志上启用了调试日志级别。现在,当我使用 IE 尝试访问 Web 应用程序时,我收到以下错误:
[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 [email protected]
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>
答案1
SSLCipherSuite 全部:+高:-中:-低:-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 可能存在问题。