CA sertifika adı olarak gördüğüm şey budur:
depth=1 /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at //www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3
verify error:num=20:unable to get local issuer certificate
verify return:0
Yukarıdaki ikinci denememde -showcerts yaptıktan sonra aldığım sertifikanın adı buydu. Bunu yaparak anahtar deposundaki certs listeledim:
$JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts
Orada CA sertifikasını görüyorum.
Alias name: versign2006
Creation date: Jan 21, 2011
Entry type: trustedCertEntry
Owner: CN=VeriSign Class 3 International Server CA - G3, OU=Terms of use at www.verisign.com/rpa (c)10, OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Serial number: 641be820ce020813f32d4d2d95d67e67
Valid from: Sun Feb 07 19:00:00 EST 2010 until: Fri Feb 07 18:59:59 EST 2020
Certificate fingerprints:
MD5: BA:B0:65:B4:3B:9C:E8:40:30:21:7D:C5:C6:CD:3F:EB
SHA1: B1:8D:9D:19:56:69:BA:0F:78:29:51:75:66:C2:5F:42:2A:27:71:04
Openssl'nin sunucuyla birlikte kullandığım anahtar deposunu kullandığından emin olmak için, -CAfile bağımsız değişkenini kullanıyorum:
openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts
CA'nın java anahtar deposunun bir parolası olduğunu bilerek, -pass pass: password seçeneğini aşağıdaki gibi kullanmayı denedim:
openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts -pass pass:changeit
ama bu da işe yaramadı.
Bu konuda komik olan, cacerts dosyasının üzerinde bir parola olması ve openssl'in cacerts dosyasını okuyamayacağından şikayet etmemesi. Bu benim için balık gibi görünüyor. Bu ya da başka bir şey zil mi çalıyor?
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'./ca_issuer_cert.pem')
Bundan sonra STARTTLS'i (LDAP bağlantı noktası 389 içinde) beklendiği gibi kullanabildim.