在jenkins中配置LDAP全局设置
我已经设置了一个Jenkins实例,正在尝试设置LDAP,但出现了这个错误 无法连接到ldaps://server.domain.com:636 : javax.naming.CommunicationException:server.domain.com:636[Root] 异常为javax.net.ssl.SSLHandshakeException: sun.security.validator.validator异常:PKIX路径生成失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 查找到请求目标的有效证书路径] 目标服务器正在使用自签名证书。有没有办法禁用证书检查?在另一个web服务器实例中,我们使用在jenkins中配置LDAP全局设置,jenkins,ldap,jenkins-plugins,Jenkins,Ldap,Jenkins Plugins,我已经设置了一个Jenkins实例,正在尝试设置LDAP,但出现了这个错误 无法连接到ldaps://server.domain.com:636 : javax.naming.CommunicationException:server.domain.com:636[Root] 异常为javax.net.ssl.SSLHandshakeException: sun.security.validator.validator异常:PKIX路径生成失败: sun.security.provider.ce
AUTH_LDAP_GLOBAL_OPTIONS = {
ldap.OPT_X_TLS_REQUIRE_CERT: False }
使用Jenkins时是否有类似的选项?您可以像 或者,您可以通过获取证书公钥并将其导入到您的./jre/lib/security/cacert信任库来信任证书
export JAVA_HOME='/path/to/your/jre'
export LDAPHOST='LDAPHOST01.domain.ccTLD'
export LDAPSSLPORT='636'
export CERTFILENAME='/tmp/ldapcert.cer'
echo "" | openssl s_client -connect $LDAPHOST:$LDAPSSLPORT 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $CERTFILENAME
keytool -import -trustcacerts -alias $LDAPHOST -file $CERTFILENAME -keystore $JAVA_HOME/lib/security/cacerts
导入证书时,将要求您输入密钥库密码。默认值为“changeit”。。。否则不管你把它改成什么。将显示证书的详细信息,并询问您是否确实要信任证书
[lisa@linux02 checkSSLCertExpiry]# keytool -import -trustcacerts -alias $LDAPHOST -file $CERTFILENAME -keystore $JAVA_HOME/lib/security/cacerts
Enter keystore password:
Owner: CN=LDAPHOST01
Issuer: CN=LDAPHOST01
Serial number: 3a2542463f2d59bb4018f9e9179dd6a8
Valid from: Mon Jun 02 16:55:08 EDT 2014 until: Sun Jun 02 16:55:08 EDT 2019
Certificate fingerprints:
MD5: C3:33:62:B4:A8:30:05:54:3A:F9:AE:99:66:35:EB:22
SHA1: FA:C2:7B:5D:BF:74:05:58:EF:37:F1:AD:8D:8B:DF:02:93:4C:D8:7E
SHA256: BE:D6:DF:A9:4F:82:6B:AF:2C:C7:45:9B:B7:A4:0A:B4:9A:81:DB:8E:49:A2:38:16:49:83:F7:4C:D5:EC:61:E0
Signature algorithm name: SHA1withRSA
Subject Public Key Algorithm: 2048-bit RSA key
...
#4: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
DNSName: LDAPHOST01
DNSName: LDAPHOST01.domain.ccTLD
]
Trust this certificate? [no]: yes
Certificate was added to keystore
[lisa@linux02checkSSLCertExpiry]#keytool-import-trustcacerts-alias$LDAPHOST-file$CERTFILENAME-keystore$JAVA_HOME/lib/security/cacerts
输入密钥库密码:
所有者:CN=LDAPHOST01
发行人:CN=LDAPHOST01
序列号:3a2542463f2d59bb4018f9e9179dd6a8
有效期:2014年美国东部时间6月2日星期一16:55:08至2019年美国东部时间6月2日星期日16:55:08
证书指纹:
MD5:C3:33:62:B4:A8:30:05:54:3A:F9:AE:99:66:35:EB:22
SHA1:FA:C2:7B:5D:BF:74:05:58:EF:37:F1:AD:8D:8B:DF:02:93:4C:D8:7E
SHA256:BE:D6:DF:A9:4F:82:6B:AF:2C:C7:45:9B:B7:A4:0A:B4:9A:81:DB:8E:49:A2:38:16:49:83:F7:4C:D5:EC:61:E0
签名算法名称:SHA1 WithRSA
主题公钥算法:2048位RSA密钥
...
#4:ObjectId:2.5.29.17临界性=错误
SubjectAlternativeName[
DNSName:LDAPHOST01
DNSName:LDAPHOST01.domain.ccTLD
]
信任这个证书吗?[否]:是的
证书已添加到密钥库
用于验证存储中是否存在证书的keytool命令:
[lisa@linux02 checkSSLCertExpiry]# keytool -list -keystore $JAVA_HOME/lib/security/cacerts -alias $LDAPHOST
Enter keystore password:
LDAPHOST01.domain.ccTLD, Sep 28, 2018, trustedCertEntry,
Certificate fingerprint (SHA1): FA:C2:7B:5D:BF:74:05:58:EF:37:F1:AD:8D:8B:DF:02:93:4C:D8:7E
[lisa@linux02checkSSLCertExpiry]#keytool-列表-密钥库$JAVA_HOME/lib/security/cacerts-别名$LDAPHOST
输入密钥库密码:
LDAPHOST01.domain.ccTLD,2018年9月28日,trustedCertEntry,
证书指纹(SHA1):FA:C2:7B:5D:BF:74:05:58:EF:37:F1:AD:8D:8B:DF:02:93:4C:D8:7E
重写Java的默认信任机制是一劳永逸的,但显然会删除验证证书所需的所有安全性。信任LDAP服务器的证书意味着您需要知道每次证书更新时的情况,并且需要将新证书导入到您的cacerts文件中
为了避免目录服务器证书过期时每一两年验证失败一次,我设置了一个有效期相当长(10年左右)的证书颁发机构(CA)。您可以使用专用PKI基础架构或简单的OpenSSL来实现这一点。通过将CA的公钥导入到cacerts中,您信任针对CA颁发的任何证书。因此,如果目录证书每年更新,您无需执行任何操作。在更换CA证书的十年内,您需要将新的CA证书添加到存储中