我正在尝试使用 Jenkins 的 crowd 2 Plugin 将在 AWS 上运行的 Jenkins(版本 2.121.2)连接到本地 Atlassian Crowd Server(版本 3.1.2)。Crowd 服务器需要双向 SSL 身份验证。
后续步骤:
将 Crowd 服务器的证书链导入到位于 $JAVA_HOME/jre/lib/security/cacerts 的 Java 信任存储中,因此 Jenkins 信任 Crowd 服务器。
使用私钥和证书在 jenkins 中创建用于客户端身份验证的密钥库(JKS)。
修改 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 failure
jenkins 日志。来自日志的信息,
Server Hello 通过,并提供了它信任的 CA 列表,其中显示了 Atlassian 人群服务器。在 jenkins 启动期间,我还可以看到它添加了受信任的证书。
但是当 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 插件或者我做错了什么。我看过这个问题,但如果这可能与否,则没有明确的答案。
非常感谢任何帮助/指导。