部署到sonatype时“收到致命警报:bad_record_mac”

时间:2012-10-08 18:48:51

标签: java maven ssl sonatype

尝试部署到sonatype存储库时,我得到了这个堆栈跟踪(有时!):

javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1977)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1093)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:702)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
at org.apache.maven.wagon.providers.http.httpclient.impl.io.AbstractSessionOutputBuffer.flushBuffer(AbstractSessionOutputBuffer.java:131)
at org.apache.maven.wagon.providers.http.httpclient.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.java:151)
at org.apache.maven.wagon.providers.http.httpclient.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:114)
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon$RequestEntityImplementation.writeTo(AbstractHttpClientWagon.java:188)
at org.apache.maven.wagon.providers.http.httpclient.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.java:96)
at org.apache.maven.wagon.providers.http.httpclient.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.java:108)
at org.apache.maven.wagon.providers.http.httpclient.impl.entity.EntitySerializer.serialize(EntitySerializer.java:120)
at org.apache.maven.wagon.providers.http.httpclient.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:263)
at org.apache.maven.wagon.providers.http.httpclient.impl.conn.AbstractClientConnAdapter.sendRequestEntity(AbstractClientConnAdapter.java:227)
at org.apache.maven.wagon.providers.http.httpclient.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:255)
at org.apache.maven.wagon.providers.http.httpclient.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
at org.apache.maven.wagon.providers.http.httpclient.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
at org.apache.maven.wagon.providers.http.httpclient.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
at org.apache.maven.wagon.providers.http.httpclient.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.maven.wagon.providers.http.httpclient.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.execute(AbstractHttpClientWagon.java:674)
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:515)

根据建议here,我设置了这个:

MAVEN_OPTS="-Dhttps.protocols=SSLv3 -Dforce.http.jre.executor=true"

它仍然无济于事。我正在使用:

$ java -version
java version "1.7.0_07"
OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-0ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

有什么想法吗?

PS。我在jdk7-dev mailing list问了同样的问题,但还没有得到任何有用的答案。

6 个答案:

答案 0 :(得分:7)

如果SSLv3出现问题,解决方案是降级到Maven 3.0.3并使用建议的Maven选项。

MAVEN_OPTS="-Dhttps.protocols=SSLv3 -Dforce.http.jre.executor=true"

您尝试过的SSLv3修复程序在Maven 3.0.4中无效。我已经提交了一份错误报告,说明了原因:Maven JIRA ticket MNG-5363

经过一番搜索后,我无法确定-Dforce.http.jre.executor = true是否正在尝试修复,所以我认为你不需要它,但建议它的人可能是有充分理由的。< / p>

几周前,我们部门刚刚诊断出这些问题。如果您因SSLv3而遇到错误,我会期望它与我们的服务器注意到的更加一致。也许有时会在您的情况下选择不同的SSL,但这看起来也很奇怪。

最后,3.0.3中有更多错误,我只打了其中一个在3.0.4中修复过的错误,所以要小心。

答案 1 :(得分:3)

我有maven多模块项目(jodd.org),由于这个错误,我无法将所有工件上传到Sonatype最近5个小时。我在Windows 7上使用JDK-64b 7u7和7u9。

Here有人说这是JDK 7u7中的一个问题;然而,升级到7u9并没有帮助我。

最后,我能够使用JDK 6成功上传所有工件。

然而,由于这个错误是随机出现的,我不能100%确定这只是一个巧合,或者它在JDK6上确实效果更好。

答案 2 :(得分:2)

此处记录了一种可能的解决方法:https://jira.codehaus.org/browse/MNG-5237

答案 3 :(得分:1)

再试一次,自2013年1月19日起,Sonatype OSS配置已经过调整,可能解决了这个问题。

参考:https://issues.sonatype.org/browse/OSSRH-5165

答案 4 :(得分:1)

答案 5 :(得分:0)

我在使用Maven 3.0.5时遇到了这个SSL错误,但当我升级到3.1.0时,似乎已经修复了。