Vì vậy, đây là những gì tôi thấy như tên chứng chỉ 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
Đó là tên của chứng chỉ mà tôi đã nhập sau khi tôi thực hiện các phần mềm trong lần thử thứ hai ở trên. Tôi đã liệt kê các certs trong kho khóa bằng cách làm điều này:
$JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts
Tôi thấy chứng chỉ CA ở đó.
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
Để chắc chắn rằng openssl đang sử dụng kho khóa mà tôi đang sử dụng với máy chủ, tôi đang sử dụng đối số -CAfile:
openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts
Biết rằng kho khóa java cho CA có mật khẩu, tôi đã thử sử dụng tùy chọn -pass pass: password như thế này:
openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts -pass pass:changeit
nhưng điều đó cũng không hiệu quả.
Điều thú vị ở đây là tệp cacerts có mật khẩu trên đó và openssl không phàn nàn rằng nó không thể đọc được tệp cacerts. Điều đó có vẻ tanh với tôi. Có hay bất cứ điều gì khác rung chuông?
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'./ca_issuer_cert.pem')
Tôi đã có thể sử dụng STARTTLS (trong cổng LDAP 389) như mong đợi.