我手里有一个 SSL LDAP 服务器证书。我想用它来使用 UnboundID SDK 连接到 LDAP 服务器。
我不想使用 com.unboundid.util.ssl.TrustAllTrustManager 如下所示: Using UnboundID SDK with an SSL certificate file to connect to LDAP server in Android app
以下 TrustManager 不符合我们的产品要求:
com.unboundid.util.ssl.PromptTrustManager
com.unboundid.util.ssl.HostNameTrustManager
com.unboundid.util.ssl.ValidityDateTrustManager
我不想要任何用户交互,以及我在 TrustManager 上方验证证书颁发者的列表中遗漏的内容。
另外,我不想在任何密钥库中插入 LDAP 服务器证书,所以我不能使用以下 TrustManager:
com.unboundid.util.ssl.WrapperKeyManager
com.unboundid.util.ssl.PKCS11KeyManager
com.unboundid.util.ssl.KeyStoreKeyManager
我想做类似下面的代码:
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate cert = cf.generateCertificate(byteArrayInputStream);
SSLUtil sslUtil = new SSLUtil(new CertificateTrustManager(cert));
SSLSocketFactory socketFactory = sslUtil.createSSLSocketFactory();
LDAPConnection connection = new LDAPConnection(socketFactory,
"server.example.com", 636);
请注意,UnboundID SDK 中不存在 CertificateTrustManager。怎么可能做到呢?