700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > org.apache.maven.plugins:maven-resources-plugin:2.4.3Received fatal alert: protocol_version

org.apache.maven.plugins:maven-resources-plugin:2.4.3Received fatal alert: protocol_version

时间:2023-01-29 08:17:18

相关推荐

org.apache.maven.plugins:maven-resources-plugin:2.4.3Received fatal alert: protocol_version

转摘链接:/blog/2429045

eclipse maven mvn install 报错 Received fatal alert: protocol_version 解决方案

1 背景

今天我们一个小伙伴同事说, eclipse 项目运行maven install, 下载mavenmaven-surefire-plugin插件时候报错,控制台提示信息:

Java代码

Failedtoreadartifactdescriptorfororg.apache.maven.surefire:surefire-api:jar:2.20.1:Couldnottransferartifactorg.apache.maven.surefire:surefire-api:pom:2.20.1from/tocentral(https://repo./maven2):Receivedfatalalert:protocol_version->[Help1]

使用mvn install -X显示详细的错误信息如下:

Java代码

Causedby:.ssl.SSLException:Receivedfatalalert:protocol_versionatsun.security.ssl.Alerts.getSSLException(Alerts.java:208)atsun.security.ssl.Alerts.getSSLException(Alerts.java:154)atsun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979)atsun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)atsun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)atsun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)atsun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)atcom.squareup.okhttp.Connection.connectTls(Connection.java:235)atcom.squareup.okhttp.Connection.connectSocket(Connection.java:199)atcom.squareup.okhttp.Connection.connect(Connection.java:172)atcom.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:367)atcom.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)atcom.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)atcom.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245)atcom.squareup.okhttp.Call.getResponse(Call.java:267)atcom.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)atcom.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)atcom.squareup.okhttp.Call.execute(Call.java:79)atio.takari.aether.okhttp.OkHttpAetherClient.execute(OkHttpAetherClient.java:167)atio.takari.aether.okhttp.OkHttpAetherClient.get(OkHttpAetherClient.java:113)atio.takari.aether.connector.AetherRepositoryConnector$GetTask.resumableGet(AetherRepositoryConnector.java:600)atio.takari.aether.connector.AetherRepositoryConnector$GetTask.run(AetherRepositoryConnector.java:453)atio.takari.aether.connector.AetherRepositoryConnector.get(AetherRepositoryConnector.java:304)...34more[ERROR][ERROR][ERROR]Formoreinformationabouttheerrorsandpossiblesolutions,pleasereadthefollowingarticles:[ERROR][Help1]/confluence/display/MAVEN/PluginReso

2. 原因

由于TLSv1.1 协议不安全, 出于PCI 安全标准的原因, 从-06-18起, mavenSonatype 中央仓库不再支持 TLSv1.1 以及以下的协议版本,原文参见no longer supports TLSv1.1 and below 官方说明

通过chrome security 面板看到,maven 中央仓库已经是TLSv1.2 协议了

由于我的同事, 使用的 jdk 是1.7 , jdk1.7虽然支持TLS 1.2 但是默认是 disabled的, 所以就会出现上面的Received fatal alert: protocol_version 异常

下表格是 根据Oracle文档各版本JDK默认使用的TLS协议:

3. 解决方案

3.1 方案1 : 使用 http 去访问 maven 中央仓库

对于安全要求不严格的场景, 可以使用http 去访问maven 仓库

对于plugin , 可以在setting .xml 加入或者改成如下:

Xml代码

<pluginRepositories><pluginRepository><id>central</id><url>/maven2</url></pluginRepository></pluginRepositories>

下面是相关位置代码:

Xml代码

<profiles><profile><id>maven-home</id><repositories><repository><id>central</id><url>/maven2</url><releases><enabled>true</enabled><checksumPolicy>warn</checksumPolicy></releases><snapshots><enabled>false</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>/maven2</url></pluginRepository></pluginRepositories></profile>

3.1 方案2 : 升级 jdk 到1.8

jdk1.8 TLS 1.2 默认是 enable ,不会出现这个异常

PS: 这个代价可以有点大, 尤其是一些老的项目, 不是说升就可以升的

方案3: 通过添加-Dhttps.protocols=TLSv1.2 , 配置 java runtime 参数,来 enable TLS 1.2

如果你是jdk 1.7 (尤其是1.7.0_131-b31 以前的版本)你可以使用以下command line:

mvn -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 <goals>

或者在相关脚本中加入:

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

如果你是 1.6 的版本, sorry , 只能使用http 模式, 虽然有部分jdk 1.6 小版本声称支持 TLS 1.2,参见

Changes in 6u115 b32 TLS v1.2 support now available

4. 参考

/articles//May/04/discontinued-support-for-tlsv11-and-below/

/questions/50946420/could-not-transfer-artifact-https-repo-maven-apache-org-maven2-received-fat/50956622

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。