在 REST API 上对 SSL 进行单元测试
Unit Testing SSL at REST APIs
我有一个通过 SSL 运行的 restlet 应用程序。我已经为它创建了一个密钥库并从中提取了证书。
我想测试我的 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
(我的密钥库的密码)。
这段代码在某些其他计算机上不起作用(不是通用解决方案)。如果您将 java 主页放入需要许可的文件路径中,则会抛出错误。
那么,有什么方法可以创建另一个信任库并使用它来测试我的 SSL 吗?
根据代码,它应该可以在您的系统或任何其他系统中正常工作。根据我的 ssl 知识,您提取的证书与您的系统有依赖关系。
所以你必须提取或准备新的证书,不仅你的机器应该信任它应该被所有机器信任。
它在没有密码的情况下工作,因为您在 keystore.store() 方法调用中使用 null 作为密码,请改用 .
keystore.store(out, "password".toCharArray() );
你的,
我通过这种方式找到了解决方案:我在测试期间将我的密钥库声明为信任密钥库。因此,它已成为其他计算机的通用解决方案。我还为我的测试信任密钥库设置了一个密码,该密码将在我的测试期间使用。
我有一个通过 SSL 运行的 restlet 应用程序。我已经为它创建了一个密钥库并从中提取了证书。
我想测试我的 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
(我的密钥库的密码)。
这段代码在某些其他计算机上不起作用(不是通用解决方案)。如果您将 java 主页放入需要许可的文件路径中,则会抛出错误。
那么,有什么方法可以创建另一个信任库并使用它来测试我的 SSL 吗?
根据代码,它应该可以在您的系统或任何其他系统中正常工作。根据我的 ssl 知识,您提取的证书与您的系统有依赖关系。 所以你必须提取或准备新的证书,不仅你的机器应该信任它应该被所有机器信任。
它在没有密码的情况下工作,因为您在 keystore.store() 方法调用中使用 null 作为密码,请改用 .
keystore.store(out, "password".toCharArray() );
你的,
我通过这种方式找到了解决方案:我在测试期间将我的密钥库声明为信任密钥库。因此,它已成为其他计算机的通用解决方案。我还为我的测试信任密钥库设置了一个密码,该密码将在我的测试期间使用。