我正尝试在Android应用中建立与LDAP服务器的连接,并使用UnboundID SDK。最近,从不安全到安全的LDAP进行了更改,我必须相应地更改应用程序。我已被授予SSL证书文件以进行验证。我已经用here所描述的文件来创建密钥库。我在我的应用的资产文件夹中有这个密钥库文件,并且正在从中获取。下面的代码目前不工作,并抛出异常:将UnboundID SDK与SSL证书文件一起使用以连接到Android应用中的LDAP服务器
LDAPException(resultCode = 01(连接错误),errorMessage =('尝试连接到服务器时发生错误place.myserver.com:636:javax。 net.ssl.SSLHandShakeException:java.security.cert.CertPathValidatorException:认证路径信任锚找不到
// code from above link
AssetManager assetManager = getApplicationContext().getAssets();
InputStream keyStoreInputStream = assetManager.open("yourapp.store");
KeyStore trustStore = KeyStore.getInstance("BKS");
trustStore.load(keyStoreInputStream, "myPassword".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(trustStore);
// my code
SSLUtil sslUtil = new SSLUtil(tmf.getTrustManagers());
LDAPConnection connection = new LDAPConnection(sslUtil.createSSLSocketFactory());
connection.connect("place.myserver.com", 636);
但是,代码段:
SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
LDAPConnection connection = new LDAPConnection(sslUtil.createSSLSocketFactory());
connection.connect("place.myserver.com", 636);
不工作(虽然我被知情高层认为这将是不安全的) 我不太确定我在这里做错了什么,所以任何帮助,将不胜感激。此外,如果有更好的方法来完成这个比我上面尝试做的更好,请随时让我知道:)但我想坚持使用UnboundID库,因为其余代码已经写入使用也是如此,如果我使用TrustAllTrustManager,一切都有效。