java - 在 REST API 上对 SSL 进行单元测试

标签 java ssl restlet

我有一个通过 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 作为密码并使用 changeitpassword(我的 keytstore 的密码)。

这段代码不适用于其他一些计算机(不是通用解决方案)。如果将 java 主目录放入需要权限的文件路径中,则会抛出错误。

那么,有没有办法创建另一个信任库并使用它来测试我的 SSL?

最佳答案

根据代码,它应该可以在您的系统或任何其他系统中正常工作。根据我的 ssl 知识,您提取的证书与您的系统有依赖关系。 因此,您必须提取或准备新的证书,不仅您的机器应该信任它,所有机器都应该信任它。

关于java - 在 REST API 上对 SSL 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166927/

相关文章:

java - 无法执行安装管理器文件

java - 无法使用 javamail api 建立连接

node.js - 使用 LetsEncrypt 和 Heroku 配置 KeystoneJS 应用程序

java - 将 html 表单发布到 reSTLet

java - Spring 联合测试

Java Socket仅适用于 "localhost",但不适用于专用网络

java - reSTLet 分页 HttpClientHelper 启动/停止

java - 创建依赖于 RESTlet 的 Maven Artifact - 如何处理版本

java - Spring 中具有两个 id 的同一实例

http - 如何在重定向到 SSL 期间保持相同的 ASP session ?