我在2018年6月18日之后连接到Maven Central / https://repo1.maven.org时遇到以下错误。
Received fatal alert: protocol_version
或
Received fatal alert: peer not authenticated
答案 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
。如下图所示:
清理项目(可能是可选项目),然后重新运行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)
请注意,如果您使用的是IBM JDK,则可能还需要设置
com.ibm.jsse2.overrideDefaultTLS=true
答案 7 :(得分:0)
使用jdk7-u221,我需要安装Java密码学扩展(JCE)
答案 8 :(得分:0)
要在Windows应用服务器上设置Java属性:
然后添加Java opts:
重新启动服务。
答案 9 :(得分:0)
将Maven版本更新为3.6.3并运行
mvn -Dhttps.protocols=TLSv1.2 install
它适用于centos 6.9