如何解决RECV SSLv3 ALERT:致命,bad_record_mac

时间:2011-11-27 03:01:59

标签: apache ssl cas certificate sslhandshakeexception

在过去的几天里,我尝试在Ubuntu 10.10上安装一个正常工作的CAS服务器(Jasig CAS)。我安装了Tomcat 6并为SSL端口8443配置了(server.xml):

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<Connector port="8443"
        maxHttpHeaderSize="8192"
        maxThreads="150"
        minSpareThreads="25"
        disableUploadTimeout="true"
        acceptCount="100"
        scheme="https"
        secure="true"
        clientAuth="false"
        SSLEnabled="true"
        SSLProtocol="SSLv3"
        SSLCertificateFile="/etc/ssl/certs/server_cert.pem"
        SSLCertificateKeyFile="/etc/ssl/private/server_key.pem"
        SSLCACertificateFile="/etc/ssl/certs/ca_cert.pem"
        SSLCACertificatePath="/etc/ssl/certs"
        SSLPassword="password"
     />

server_cert.pem,server_key.pem是自签名的x509证书。此外,我为Windows测试服务器(apache2 - xampp)创建了一个x509v3证书(两个服务器位于同一个LAN中,IP为10.0.0。*)。这些证书安装在位于java目录中的java密钥库(cacerts)中。由于我总是遇到客户端证书中“替代主题名称”的问题,因此我使用了openssl配置文件的扩展版本来创建它。

apache2 ssl配置文件如下所示:

<IfModule ssl_module>
....
<VirtualHost 10.0.0.2:443>
SSLEngine on
ServerName 10.0.0.2:443
#ServerAlias 10.0.0.2

DocumentRoot c:/xampp/htdocs
SSLProtocol -all +SSLv3
SSLCertificateFile C:/xampp/ssl/certs/powercomputer_cert.pem
SSLCertificateKeyFile C:/xampp/ssl/private/powercomputer_key.pem
SSLCACertificateFile C:/xampp/ssl/certs/ca_cert.pem
</VirtualHost>
...
</IfModule>

SSL连接正在两台服务器上运行(使用IE和firefox进行测试)。

现在是艰巨的任务。我使用了一个名为phpCAS的模块,在php上编程,在windows机器上与CAS服务器进行通信。模块将回调URL发送到CAS服务器,服务器发回代理票等等。

但我无法确保两台服务器之间的有效SSL握手。 openssl -s_client -connect ...对于两个服务器都没有显示任何错误,所以我调试了完整的SSL握手(这里只是相关部分):

...

  

* ServerHelloDone

     

* ClientKeyExchange,RSA PreMasterSecret,SSLv3 http-apr-8443-exec-3,WRITE:SSLv3 Handshake,length = 132 SESSION

     

KEYGEN:PreMaster Secret:0000:03 00 78 96 8F EE D3 4A 2F A8 CC F8   F9 D7 2F CB .. x .... J /...../。 0010:9E 3A 58 66 43 0E D5 49 3C 8A B0   3D 3F 2C 89 A0。:XfC..I&lt; .. =?,.. 0020:BC E2 B2 12 F8 D9 55 73 F2 2C   1F CC 81 80 94 22 ...... Us。,.....“CONNECTION KEYGEN:Client Nonce:   0000:4E D1 94 ED 32 7F FA 72 40 3C 43 C8 05 E2 62 D0   ñ... 2..r @   91 E2 D0 1C 90 3D 30 DD ..n; W6 ....... = 0。主秘密:0000:EB 25   F0 A2 A3 FF 37 06 BB 79 41 C5 E5 07 1C 64。%.... 7..yA .... d 0010:77   66 A3 37 71 97 63 AF DB A2 79 47 85 E2 9C 74 wf.7q.c ... yG ... t 0020:   5F 14 3D 26 57 E8 AD 9B A1 7C AC 33 00 04 4A E0 _。=&amp; W ...... 3..J。   客户端MAC写密码:0000:C9 20 BF A5 A6 2B C1 DA A8 4E 93 E0   DE 76 06 53。 ... + ... N ... v.S服务器MAC写密码:0000:66 77 5A   3E BD E7 19 55 A4 80 1E E6 8A 9E 2A 5E fwZ&gt; ... U ...... * ^客户端   写密钥:0000:58 D1 29 38 13 D8 83 EF 4F BD 7A 18 C8 35 D7 B4   X.)8 .... O.z..5 ..服务器写密钥:0000:3A 7B 6A 6E 66 E9 E1 42 A4   3C C3 19 D0 7F 21 FF:.jnf..B。&lt; .... !. ......没有用于此密码的IV

     

http-apr-8443-exec-3,WRITE:SSLv3更改密码规范,长度= 1

     

* 已完成的verify_data:{71,19,125,80,118,60,64,122,243,112,45,18,254,144,12,143,221,125 ,10,94,15,221,122,21,   90,190,76,224,224,57,67,172,228,75,181,228}

     

* http-apr-8443-exec-3,WRITE:SSLv3握手,长度= 56 http-apr-8443-exec-3,   阅读:SSLv3警报,长度= 2

     

http-apr-8443-exec-3,RECV SSLv3警告:致命,bad_record_mac

     

http-apr-8443-exec-3,名为closeSocket()http-apr-8443-exec-3,

     

处理异常:javax.net.ssl.SSLException:收到致命警报:

     

bad_record_mac 2011-11-27 02:39:57,315错误

     

[org.jasig.cas.util.HttpClient] -      

bad_record_mac&GT; javax.net.ssl.SSLException:收到致命警报:

     

bad_record_mac at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)at at   sun.security.ssl.Alerts.getSSLException(Alerts.java:154)at   ....

我在过去几天没有找到任何解决方案,我真的不知道是什么问题。顺便说一句,我强迫使用SSLv3。

非常感谢您的任何建议。

0 个答案:

没有答案