IBMメインフレームに接続するためのWindows Java 1.6.0_29-b11 VMで動作するApache CXFクライアントを使用しています(これはzSeriesだと思います)。SOAPそこで実行されているWebサービス。接続はSSL/TLSを介して行われ、ほとんどの場合正常に動作します。SSL「不良レコードMAC」例外のトラブルシューティング方法
しかし、時々私はメッセージでSSL例外を持っています。以下は、javax.net.debug
プロパティを使用したプログラムの出力です。
2011-11-16 12:32:37,731 INFO LoggingOutInterceptor: Outbound Message
---------------------------
ID: 29
Address: https://1.2.3.4/access/servlet/blabla.atk123
Encoding: UTF-8
Content-Type: text/xml
Headers: {Accept=[*/*], SOAPAction=["Blablaaction/ATK123.Execute"]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ATK123.Execute xmlns="Blabla"><Usrid>WA</Usrid><Usrpwd>54321</Usrpwd><Ultautid>9999</Ultautid></ATK123.Execute></soap:Body></soap:Envelope>
--------------------------------------
pool-1-thread-1, setSoTimeout(30000) called
pool-1-thread-1, WRITE: TLSv1 Application Data, length = 321
pool-1-thread-1, WRITE: TLSv1 Application Data, length = 262
pool-1-thread-1, READ: TLSv1 Application Data, length = 483
pool-1-thread-1, READ: TLSv1 Application Data, length = 16148
pool-1-thread-1, READ: TLSv1 Application Data, length = 282
%% Invalidated: [Session-1, SSL_RSA_WITH_RC4_128_SHA]
pool-1-thread-1, SEND TLSv1 ALERT: fatal, description = bad_record_mac
pool-1-thread-1, WRITE: TLSv1 Alert, length = 22
pool-1-thread-1, called closeSocket()
pool-1-thread-1, handling exception: javax.net.ssl.SSLException: bad record MAC
2011-11-16 12:32:38,511 WARN PhaseInterceptorChain: Interceptor for {Blabla}ATK123#{Blabla}Execute has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: bad record MAC
at org.apache.cxf.interceptor.LoggingInInterceptor.logging(LoggingInInterceptor.java:144)
at org.apache.cxf.interceptor.LoggingInInterceptor.handleMessage(LoggingInInterceptor.java:73)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:797)
.... (more stuff)
残念ながら、サーバーでエンドポイントを変更またはデバッグすることはできません。
この原因は何ですか?
この動作をどのように分離して修正できますか? 、それはおそらくSSLの実装と大きすぎること送信されるデータの量とは何かを持っている
20 Bad record MAC fatal Possibly a bad SSL implementation, or payload has been tampered with e.g. FTP firewall rule on FTPS server.
:これはJavaに関連していない
これは何時でも無線接続でですか? –
["JavaとPortgreSQLの間の"不正なレコードMAC "SSLエラー]の重複が可能です。(http://stackoverflow.com/questions/2446292/bad-record-mac-ssl-error-between-java-and-portgresql) –
これはファイバー接続です。あなたがあまりにも安定していません.. –