为什么从Maven Central收到“接收到的致命警报:protocol_version”或“未对等身份验证”?


Answers:


188

解决方案1:配置Java 7

需要在命令行中使用Java属性启用TLS 1.2协议

mvn -Dhttps.protocols=TLSv1.2 install

install 只是目标的一个例子

相同的错误ant可以通过这种方式解决

java -Dhttps.protocols=TLSv1.2 -cp %ANT_HOME%/lib/ant-launcher.jar org.apache.tools.ant.launch.Launcher

解决方案2:将Java 7与Oracle Advanced Support一起使用

通过更新Java 7版本也可以解决问题。但是最后一个可用的版本(7u80)不能解决问题。需要使用Oracle Advanced Support(以前称为Java for Business)提供的更新。

解决方案3:改为使用Java 8

配置$JAVA_HOME为指向Java 8。


您在这里节省了一天!
Herve Mutombo,

您能告诉我我尝试过的SBT中的等效功能是什么,sbt -Dhttps.protocols=TLSv1.2 instal但它不起作用
G.Saleh

@ G.Saleh您需要将参数传递给java的方法-Dhttps.protocols=TLSv1.2。因此,您需要找到如何在SBT中传递Java参数。
v.ladynev

67

在2018年6月,为了提高安全性并符合现代标准,到Central的SSL连接将不再支持不安全的TLS 1.0和1.1协议。这只会影响使用HTTPS访问Central的Java 6(和Java 7)用户,根据我们的指标,该用户不到0.2%的用户。

有关更多详细信息和解决方法,请参见此处的博客和常见问题解答:https : //blog.sonatype.com/enhancing-ssl-security-and-http/2-support-for-central


blog.sonatype.com文章中的链接抛出404。这是因为他们将链接更新为central.sonatype.org/articles/2018/May/04/…
Blueboye '18年

50

以下命令对我有帮助(在运行mvn之前在bash上执行)

export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

3
在Windows上,设置MAVEN_OPTS = -Dhttps.protocols = TLSv1,TLSv1.1,TLSv1.2
Lele

设置完之后,所有的http下载对我来说都是正常的。但是https具有以下问题:无法在org.netpreserve.commons:webarchive-commons:jar:1.1.2-> org.apache.hadoop:hadoop-core:jar:0.20.2-cdh3u4上收集依赖项:无法读取工件org.apache.hadoop:hadoop-core:jar:0.20.2-cdh3u4的描述符:无法将工件org.apache.hadoop:hadoop-core:pom:0.20.2-cdh3u4从cloudera转移到cloudera(repository.cloudera。 com / artifactory / cloudera-repos):收到致命警报:handshake_failure任何帮助
Karn_way

1
奇迹般有效!谢谢!(在CentO上试用)
达斯塔

这样安全吗?
38

谢谢!这对我来说成功了!
Ben Call

17

如@ v.ladynev所述,它可与JDK 1.7一起使用

使用Eclipse,要能够maven install使用TLS命令行参数执行“运行方式” ,只需配置您正在使用的JDK。

通过窗口 > 首选项 > Java > 已安装的JRE打开对话框。

然后突出显示您正在使用的(应该​​是JDK而不是JRE),单击Edit。在“默认VM参数”字段中,填写值-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2。如下所示:

在此处输入图片说明

清理项目(可能是可选项目),然后重新运行maven install


我在org.netpreserve.commons:webarchive-commons:jar:1.1.2-> org.apache.hadoop:hadoop-core:jar:0.20.2-cdh3u4上无法收集依赖项:无法读取工件描述符org.apache.hadoop:hadoop-core:jar:0.20.2-cdh3u4:无法将工件org.apache.hadoop:hadoop-core:pom:0.20.2-cdh3u4往返于cloudera(repository.cloudera.com/ artifactory / cloudera-repos):收到致命警报:handshake_failure看起来https下载有问题。请帮助我使用java1.7_80和maven 3.6
Karn_way '19


6

很抱歉,我不知道为什么会收到错误消息。但是,我使用的是Java 7和Windows 10,对我来说,解决方案是通过更改JAVA_HOME环境变量来临时使用Java 8 。然后,我可以mvn install从Maven中央存储库运行并获取。


2
这为我创造了奇迹。作为MyEclipse的用户,我要做的就是将maven运行配置的JRE更改为1.8,然后在maven下载所需的内容后再次更改为1.7。
托尔·霍夫登



0

在Windows应用服务器上设置Java属性:

  • 配置tomcat>以管理员身份运行
  • 然后添加Java选项:

  • 重新启动服务。


-Dhttps.protocols = TLSv1,TLSv1.1,TLSv1.2
Don Julio

&-Djdk.tls.client.protocols = TLSv1,TLSv1.1,TLSv1.2
Don Julio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.