Jenkins 2和Atlassian Crowd(crowd2插件)与双向SSL集成

时间:2018-07-29 16:27:17

标签: ssl jenkins openssl atlassian-crowd

我正在尝试使用Jenkin的人群2插件将在AWS上运行的Jenkins(版本2.121.2)连接到本地Atlassian Crowd Server(版本3.1.2)。 Crowd服务器需要双向SSL身份验证。

遵循的步骤:

  1. 将Crowd服务器的证书链导入到位于$ JAVA_HOME / jre / lib / security / cacerts的Java Trust存储中,因此Jenkins信任Crowd Server。

  2. 使用私钥和证书创建密钥库(JKS),以在jenkins中进行客户端身份验证。

  3. 修改jenkins启动参数(/ etc / default / jenkins)以使用信任库和密钥库。我已经尝试了以下两种变体。

变化1:

JAVA_ARGS="-Djavax.net.debug=ssl -Djava.awt.headless=true 
-Djavax.net.ssl.trustStore=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/security/cacerts 
-Djavax.net.ssl.trustStorePassword=changeit 
-Djavax.net.ssl.keyStore=/var/lib/jenkins/identity.jks
-Djavax.net.ssl.keyStorePassword=changeit"

变化2:

# JVM Arguments
JAVA_ARGS="-Djavax.net.debug=ssl -Djava.awt.headless=true 
-Djavax.net.ssl.trustStore=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/security/cacerts 
-Djavax.net.ssl.trustStorePassword=changeit"


# Jenkins arguments
JENKINS_ARGS="--webroot=/var/cache/$NAME/war 
--httpPort=$HTTPS_PORT 
--httpsKeyStore=/var/lib/jenkins/identity.jks 
--httpsKeyStorePassword=changeit"

在jenkins的插件配置部分中填写了详细信息并尝试建立连接之后,我在jenkins日志中收到了hand_shake failure。日志中的信息,

  1. 服务器问候通过,并提供它信任的CA列表,其中显示了Atlassian人群服务器。在jenkins启动期间,我还可以看到它将证书添加为可信证书。

  2. 但是当jenkins响应来自Crowd的验证时,它不是从密钥库发送客户端密钥/证书。日志摘录如下。

CN=cloud.company.com, OU=OUnit, O=Org, L=City, ST=State, C=Country
ServerHelloDone 
Warning: no suitable certificate found - continuing 
without client authentication
Certificate chain <Empty>

我不确定是否可以使用Crowd2插件或我做错了什么。我看过这个issue,但是否有可能没有明确的答案。

非常感谢您的帮助/指导。

1 个答案:

答案 0 :(得分:1)

因此,问题出在Crowd 2 Jenkins插件。该插件的版本2最近在3个月前发布,我正在使用它。但是,在将该插件降级到1.8版之后,我就可以通过Crowd Server进行身份验证了。