[解決済み] SSL "不正なレコードMAC" 例外をトラブルシューティングする方法
2022-02-10 06:38:15
質問
Windows Java 1.6.0_29-b11 VMで動作するApache CXFクライアントを使用して、IBMメインフレーム(zSeriesだと思います)に接続し、そこで動作するSOAPウェブサービスを呼び出しています。接続はSSL/TLSを通して行われ、ほとんどの場合、問題なく動作しています。
しかし、時折、SSL例外が発生して
bad record MAC
というメッセージが表示されます。を使用したプログラムの出力は以下のとおりです。
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)
残念ながら、サーバーでエンドポイントを修正したり、デバッグしたりすることはできません。
何が原因なのでしょうか?
この動作を分離して修正するにはどうしたらいいですか?
解決方法は?
ネットワークに何らかの障害があり、不良パケットが大量に発生した場合、32ビットのTCPチェックサムを通過する不良パケットがランダムに発生する可能性があります。約40億個に1個の不良パケットがTCPをすり抜けることになります。このパケットがSSLに送られると、SSL Macが96ビットであるため、確実に悪い記録MACが生成されます。
これが原因なら、解決策はネットワークの改善しかない。
なお、一般的には、これは非常に ありえない は、MACレコードの不良の原因となる。不良パケットを生成するような欠陥のあるハードウェアを持つネットワークでさえ、パケットが実際に TLS 接続に対応するソケットに渡されるような正しい IP および TCP メタデータでそれらを生成することはまずありません。
関連
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?
-
[解決済み】認識できないSSLメッセージ、平文接続?例外あり
-
[解決済み] SSLハンドシェイクで「Could not generate DH keypair」例外が発生するのはなぜですか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] OpenSSLを使用して自己署名入りSSL証明書を生成する方法を教えてください。
-
[解決済み] PEMエンコードされた証明書からSSL証明書の有効期限を判断する方法は?
-
[解決済み】ssl証明書はどのように検証されるのですか?
-
[解決済み] SSLはどれくらいのオーバーヘッドを発生させるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み】なぜjava.io.Fileにはcloseメソッドがないのでしょうか?
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み】文字列中の � を置換する方法
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法