为什么我得到"收到致命警报:protocol_version"或者"对等体未经过身份验证"来自Maven Central?

时间:2018-06-12 19:48:01

标签: maven maven-central

我在2018年6月18日之后连接到Maven Central / https://repo1.maven.org时遇到以下错误。

Received fatal alert: protocol_version

Received fatal alert: peer not authenticated

10 个答案:

答案 0 :(得分:112)

可以在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

更新Java 7版本

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

答案 1 :(得分:60)

2018年6月,为了提高安全性并遵守现代标准,不安全的TLS 1.0&到Central的SSL连接将不再支持1.1协议。这应该只影响Java 6(和Java 7)的用户,这些用户也使用https访问中心,我们的指标小于0.2%的用户。

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

答案 2 :(得分:37)

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

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

答案 3 :(得分:11)

@ v.ladynev说,它可与JDK 1.7一起使用

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

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

然后突出显示您正在使用的版本(应该是 JDK ,而不是 JRE ),然后点击 编辑 < / strong>。在“默认VM参数”字段中,填充值-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2。如下图所示:

enter image description here

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

答案 4 :(得分:5)

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

答案 5 :(得分:1)

将“-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2”添加到窗口下的“默认VM参数”->首选项->Java->在Eclipse中安装JRE,验证并运行您的项目,它应该和会工作。

答案 6 :(得分:0)

答案 7 :(得分:0)

使用jdk7-u221,我需要安装Java密码学扩展(JCE)

Java Cryptography Extension JCE

答案 8 :(得分:0)

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

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

  • 重新启动服务。

答案 9 :(得分:0)

将Maven版本更新为3.6.3并运行

mvn -Dhttps.protocols=TLSv1.2 install

它适用于centos 6.9