0

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

后续步骤:

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

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

  3. 修改 jenkins 启动参数 (/etc/default/jenkins) 以使用 Trust store 和 Keystore。我已经尝试了以下两种变体。

变体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 的插件配置部分填写详细信息并尝试建立连接后,我收到了hand_shake failurejenkins 日志。来自日志的信息,

  1. Server Hello 通过,并提供了它信任的 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 插件或者我做错了什么。我看过这个问题,但如果这可能与否,则没有明确的答案。

非常感谢任何帮助/指导。

4

1 回答 1

1

所以,问题是由于 Crowd 2 Jenkins Plugin。该插件的第 2 版最近在 3 个月前发布,我正在使用它。但是,在将插件降级到 1.8 版后,我能够通过 Crowd Server 进行身份验证。

于 2018-07-30T10:35:49.490 回答