我正嘗試在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,一切都有效。