下面的程序用来验证JKS的文件及密码是否正确
public static URL getStoreURL(String storePath) throws IOException
{
URL url = null;
// First see if this is a URL
try
{
url = new URL(storePath);
}
catch (MalformedURLException e)
{
// Not a URL or a protocol without a handler so...
// next try to locate this as file path
File tst = new File(storePath);
if (tst.exists() == true)
{
url = tst.toURL();
} else
{
// not a file either, lastly try to locate this as a classpath
// resource
if (url == null)
{
ClassLoader loader = Thread.currentThread().getContextClassLoader();
url = loader.getResource(storePath);
}
}
}
// Fail if no valid key store was located
if (url == null)
{
String msg = "Failed to find url=" + storePath + " as a URL, file or resource";
throw new MalformedURLException(msg);
}
return url;
}
public static KeyStore loadKeyStore(String storeType, URL storePathURL, String storePassword) throws Exception
{
KeyStore keyStore = null;
String provider = null;
String providerName = null;
if (provider != null)
{
keyStore = KeyStore.getInstance(storeType, provider);
} else
if (providerName != null)
{
keyStore = KeyStore.getInstance(storeType, providerName);
} else
{
keyStore = KeyStore.getInstance(storeType);
}
if (storePathURL == null) { throw new Exception("Can not find store file for url because store url is null."); }
// now that keystore instance created, need to load data from file
InputStream keyStoreInputStream = null;
try
{
keyStoreInputStream = storePathURL.openStream();
// is ok for password to be null, as will just be used to check
// integrity of store
char[] password = storePassword != null ? storePassword.toCharArray() : null;
keyStore.load(keyStoreInputStream, password);
}
finally
{
if (keyStoreInputStream != null)
{
try
{
keyStoreInputStream.close();
}
catch (IOException e)
{
// no op
}
keyStoreInputStream = null;
}
}
return keyStore;
}
public static String verifyP12(String p12Path,String p12Pwd)
{
String ret = "验证成功";
try
{
URL ksURL = getStoreURL(p12Path);
if(ksURL==null)throw new Exception(p12Path+"文件未找到");
loadKeyStore("PKCS12",ksURL,p12Pwd);
}
catch(Exception ex)
{
ret = ex.getMessage();
ex.printStackTrace();
}
return ret;
}
public static String verifyJks(String jksPath,String jksPwd)
{
String ret = "验证成功";
try
{
URL ksURL = getStoreURL(jksPath);
loadKeyStore("JKS",ksURL,jksPwd);
if(ksURL==null)throw new Exception(jksPath+"文件未找到");
}
catch(Exception ex)
{
ret = ex.getMessage();
ex.printStackTrace();
}
return ret;
}