Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 2和Atlassian Crowd(crowd2插件)与双向SSL的集成_Ssl_Jenkins_Openssl_Atlassian Crowd - Fatal编程技术网

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

Jenkins 2和Atlassian Crowd(crowd2插件)与双向SSL的集成,ssl,jenkins,openssl,atlassian-crowd,Ssl,Jenkins,Openssl,Atlassian Crowd,我正在尝试使用Jenkin的群组2插件将AWS上运行的Jenkins(版本2.121.2)连接到Atlassian群组服务器(版本3.1.2)。群组服务器需要双向SSL身份验证 以下步骤: 将群组服务器的证书链导入到位于$Java_HOME/jre/lib/security/cacerts的Java信任存储中,以便Jenkins信任群组服务器 使用私钥和证书创建密钥库(JKS),以便在jenkins中进行客户端身份验证 修改jenkins启动参数(/etc/default/jenkins)以使用

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

以下步骤:

  • 将群组服务器的证书链导入到位于$Java_HOME/jre/lib/security/cacerts的Java信任存储中,以便Jenkins信任群组服务器

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

  • 修改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日志中收到一个
    握手失败
    。日志中的信息

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

  • 但是当jenkins响应来自群组的验证时,它并没有从密钥库发送客户端密钥/证书。下面是日志的摘录

  • CN=cloud.company.com,OU=OUnit,O=Org,L=City,ST=State,C=Country
    海龙石
    警告:未找到合适的证书-继续
    没有客户端身份验证
    证书链
    
    我不确定使用Crowd2插件是否可以实现这一点,或者我是否做错了什么。我对此进行了研究,但没有明确的答案,如果这是可能的或不可能的


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

    因此,问题是由Crowd 2 Jenkins插件引起的。插件的第2版最近在3个月前发布,我正在使用它。但是,在将插件降级到1.8版之后,我能够通过群组服务器进行身份验证。

    您还没有发布SSL调试日志,因此很难判断这里发生了什么。另外,我不是詹金斯或亚特兰西或他们的配置方面的专家。但最底层的情况是,您有一个客户端证书和一个服务器证书。客户端的信任库需要配置为信任服务器证书。服务器的信任库需要配置为信任客户端证书。这意味着atlassian端的信任库需要包括签署客户端证书的CA。@JamesKPolk忘了提到,群组服务器已配置为信任客户端证书。您确定其配置正确吗?是的,我通过将证书和私钥导入chrome并连接到群组端点进行了验证。连接正常。我认为问题在于jenkins配置使用密钥库。
    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>