Вы можете переопределить фабрику SSL по умолчанию для Java, например https://plugins.jenkins.io/skip-certificate-check
Или вы можете доверять сертификату, выбрав открытый ключ сертификата и импортировав его в ваше доверенное хранилище ./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
Команда 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
Переопределение механизмов доверия Java по умолчанию уже сделано, но, очевидно, удаляет всю безопасность, связанную с проверкой сертификата. Доверие к сертификату сервера LDAP означает, что вам нужно будет знать каждый раз, когда сертификат обновляется, и вам необходимо импортировать новый сертификат в ваш файл cacerts.
Чтобы избежать сбоя аутентификации каждый год или два по истечении срока действия сертификата сервера каталогов, я установил центр сертификации (CA) с довольно длительным (10 лет или около того) сроком действия. Вы можете сделать это с помощью выделенной инфраструктуры PKI или просто OpenSSL. Импортируя открытый ключ CA в cacerts, вы доверяете любому сертификату, выданному CA. То есть, если сертификат каталога обновляется каждый год, вам не нужно ничего делать. Через десять лет, когда сертификат CA будет заменен, вам нужно будет добавить новый сертификат CA в магазин.