如何将多个信任库路径添加到“java.net.ssl.trustStore”?
我希望我的Java代码在一个密钥库中搜索服务器的CA证书...如果它无法找到特定的证书(我认为只有当我尝试通过LDAP连接到目录服务器时才会知道),它应该在另一个密钥库中查找证书,我知道它的路径。
我试过这个:
System.setProperty("javax.net.ssl.trustStore", System.getProperty("java.home") + "/lib/security/cacerts" + System.getProperty("path.separator") + path/to/second/keystore);
但它似乎没有奏效。
只添加一个路径(其中任何一个)有效,即如果找到证书,它就像charm一样运行,如果没有,则失败。
所以我的问题是:
-
有没有一种方法可以将多个密钥库路径添加到javax.net.ssl.trustStore?
-
如果不可能,我应该如何编写代码(我要求算法),以便它不会在第一次搜索后引发异常并失败?
附言:我对Java不是很熟悉。
以下是我的代码的相关部分:
if(useSSL)
{
try
{
SSLContext se = SSLContext.getInstance("TLS");
Security.addProvider(se.getProvider());
}
catch(NoSuchAlgorithmException e) { }
System.setProperty("javax.net.ssl.trustStore", System.getProperty("java.home") + "/lib/security/cacerts");
com.org.ldap.LDAPSocketFactory ssf = new LDAPJSSESecureSocketFactory();
LDAPConnection.setSocketFactory(ssf);
}
try
{
lc = new LDAPConnection();
lc.connect( ldapServer, ldapPort);
lc.bind( ldapVersion, ldapUser, (userInfo[1]).getBytes() );
}
catch (LDAPException le)
{
le.printStackTrace();
}