我有一个通过 SSL 运行的 reSTLet 应用程序。我已经为它创建了一个 keystore 并从中提取了证书。
我想测试我的 SSL reSTLet 应用程序,但是我还需要将该证书导入到我的信任库中。我试过了,它似乎在我的机器上工作:
final char sep = File.separatorChar;
File dir = new File(System.getProperty("java.home") + sep + "lib" + sep + "security");
File file = new File(dir, "cacerts");
InputStream localCertIn = new FileInputStream(file);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(localCertIn, null);
if (keystore.containsAlias("mycertalias")) {
localCertIn.close();
return;
}
localCertIn.close();
InputStream certIn = new FileInputStream("src/test/mycert.cer");
BufferedInputStream bis = new BufferedInputStream(certIn);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
while (bis.available() > 0) {
Certificate cert = cf.generateCertificate(bis);
keystore.setCertificateEntry("mycertalias", cert);
}
certIn.close();
OutputStream out = new FileOutputStream(file);
keystore.store(out, null);
out.close();
但是,它可以使用 null 作为密码并使用 changeit
或 password
(我的 keytstore 的密码)。
这段代码不适用于其他一些计算机(不是通用解决方案)。如果将 java 主目录放入需要权限的文件路径中,则会抛出错误。
那么,有没有办法创建另一个信任库并使用它来测试我的 SSL?
最佳答案
根据代码,它应该可以在您的系统或任何其他系统中正常工作。根据我的 ssl 知识,您提取的证书与您的系统有依赖关系。 因此,您必须提取或准备新的证书,不仅您的机器应该信任它,所有机器都应该信任它。
关于java - 在 REST API 上对 SSL 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166927/