Tôi đang sử dụng máy khách Apache CXF, chạy trên máy ảo Windows Java 1.6.0_29-b11 để kết nối với máy tính lớn của IBM (tôi tin là zSeries) và gọi SOAP Dịch vụ web đang chạy ở đó. Kết nối được thực hiện thông qua SSL/TLS và phần lớn thời gian hoạt động tốt.Cách khắc phục sự cố ngoại lệ SSL "bản ghi xấu MAC"
Tuy nhiên, đôi khi tôi có ngoại lệ SSL với thông báo bad record MAC
. Đây là đầu ra của chương trình sử dụng với thuộc tính 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)
Thật không may, tôi không có khả năng sửa đổi hoặc gỡ lỗi điểm cuối tại máy chủ.
Điều gì có thể gây ra điều này?
Tôi có thể cách ly và khắc phục hành vi này như thế nào?
có kết nối không dây nào không? –
có thể trùng lặp lỗi SSL ["bản ghi xấu MAC" giữa Java và PortgreSQL] (http://stackoverflow.com/questions/2446292/bad-record-mac-ssl-error-between-java-and-portgresql) –
Điều này là một kết nối sợi quang. Mặc dù không phải là quá ổn định .. –