首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >詹金斯: https.protocols

詹金斯: https.protocols
EN

Stack Overflow用户
提问于 2015-02-19 22:46:29
回答 3查看 7.8K关注 0票数 2

在Jenkins (v1.599)中,在Maven发行版中,我得到以下错误:

代码语言:javascript
复制
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy
(default-deploy) on project myArtifactId: Failed to deploy
artifacts: Could not transfer artifact
myGroupdId:myArtifactId:pom:myVersion from/to
sonatype-nexus-staging
(https://oss.sonatype.org/service/local/staging/deploy/maven2/): peer
not authenticated -> [Help 1]

我首先在使用Java 7的构建中遇到了这种情况,但现在我在使用Java 8的构建中也遇到了问题。

经过一些研究,我发现这个问题的发生是因为https.protocols属性。

我注意到输出中的这一行几乎位于顶部:

代码语言:javascript
复制
[workspace] $ /usr/lib/jvm/java-8-oracle//bin/java
-Dhttps.protocols=SSLv3 -Dforce.http.jre.executor=true -cp /opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.6.jar:/usr/share/maven/boot/plexus-classworlds-2.x.jar
org.jvnet.hudson.maven3.agent.Maven3Main /usr/share/maven
/var/cache/jenkins/war/WEB-INF/lib/remoting-2.49.jar
/opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.6.jar
/opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.6.jar
37213

注意参数

代码语言:javascript
复制
-Dhttps.protocols=SSLv3

我不知道这个电话是干什么的,也不知道它的效果是什么。mvn调用稍后出现,因此应该启动不同的JVM (即使是在Maven发布插件对进程进行分叉时也会启动几次)。

还请注意,https.protocols的默认值是TLSv1 (Java 7)和TLSv1.2 (Java 8)。

在作业配置中设置此参数没有任何效果,但如果像这样配置Maven发布插件:

代码语言:javascript
复制
   <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>${plugin.release.version}</version>
        <configuration>
            <mavenExecutorId>forked-path</mavenExecutorId>
            <useReleaseProfile>false</useReleaseProfile>
            <arguments>-Psonatype-oss-release -Dusername=${username} -Dhttps.protocols=TLSv1.2</arguments>
        </configuration>
    </plugin>

然后发布就可以了。

我的问题:

  • 这个-Dhttps.protocols=SSLv3是从哪里来的?
  • 这真的是问题的根源吗?似乎是另一个JVM实例..。
  • 如果是源,那么在哪里可以配置/删除这个参数?

更新

我查看了MAVEN_OPTS:

  • Jenkins ->配置
  • /etc/默认/jenkins
  • env = grep MAVEN_OPTS

属性没有在那里定义。

EN

回答 3

Stack Overflow用户

发布于 2015-03-06 08:05:01

未通过身份验证的->帮助1

客户端无法验证证书。这可能是因为服务器禁用了SSLv3。

这个-Dhttps.protocols=SSLv3是从哪里来的?

不知道;您可能会更幸运地搜索您的服务器设置/作业配置/查看您的源代码。

这真的是问题的根源吗?似乎是另一个JVM实例..。

如果在服务器上禁用了SSLv3,并且您的客户端被配置为只对话SSLv3,那么它将无法工作。您可以传递多个协议。

例如-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

如果是源,那么在哪里可以配置/删除这个参数?

似乎您已经发现配置插件很好。您可以尝试在您的从环境中重写_JAVA_OPTIONS

票数 2
EN

Stack Overflow用户

发布于 2015-03-07 13:15:05

它是否来自JVM属性?调用中"-cp“之前的所有内容

代码语言:javascript
复制
/usr/lib/jvm/java-8-oracle//bin/java
-Dhttps.protocols=SSLv3 -Dforce.http.jre.executor=true -cp   /opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.6.jar:/usr/share/maven/boot/plexus-classworlds-2.x.jar
org.jvnet.hudson.maven3.agent.Maven3Main /usr/share/maven
/var/cache/jenkins/war/WEB-INF/lib/remoting-2.49.jar
/opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.6.jar
/opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.6.jar

来自系统属性,请参见https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/util/JVMBuilder.java

你看到什么了吗

/systemInfo

似乎Maven作业中的JVM属性来自Jenkins系统属性,请参阅https://issues.jenkins-ci.org/browse/JENKINS-16331

票数 0
EN

Stack Overflow用户

发布于 2015-03-06 08:16:25

这个-Dhttps.protocols=SSLv3是从哪里来的?

我会说詹金斯或者你开始你詹金斯工作的方式。

这真的是问题的根源吗?似乎是另一个JVM实例..。

如果您只启用SSLv3,则意味着客户端和服务器都需要允许并知道如何使用它。现在几乎不认为SSLv3是安全的,您应该将它更改为至少TLSv1。

如果是源,那么在哪里可以配置/删除这个参数?

在Jenkins配置或启动作业的脚本中。有时Jenkins可以“继承”环境的启动方式。检查默认环境Jenkins启动、Jenkins JDK/Java系统配置、Jenkins作业以及运行作业的可能的从主机配置。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28618508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档