Jadi ini yang saya lihat sebagai nama sertifikat CA:
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
Itu adalah nama sertifikat yang saya impor setelah saya melakukan -showcerts pada percobaan kedua saya di atas. Saya mendaftarkan sertifikat di keystore dengan melakukan ini:
$JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts
Saya melihat sertifikat CA di sana.
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
Untuk memastikan bahwa openssl menggunakan keystore yang saya gunakan dengan server, saya menggunakan argumen -CAfile:
openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts
Mengetahui bahwa java keystore untuk CA's memiliki kata sandi, saya mencoba menggunakan opsi-pass pass: kata sandi seperti ini:
openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts -pass pass:changeit
tapi itu juga tidak berhasil.
Apa yang lucu tentang itu adalah bahwa file cacerts memiliki kata sandi di atasnya dan openssl tidak mengeluh bahwa ia tidak dapat membaca file cacerts. Bagi saya itu agak mencurigakan. Apakah itu atau apa pun membunyikan lonceng?
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'./ca_issuer_cert.pem')
Setelah ini, saya dapat menggunakan STARTTLS (dalam port LDAP 389) seperti yang diharapkan.