私はSSL経由で動作する、Restletアプリケーションを持っています。私はそれのためのキーストアを作成し、そこから証明書を抽出しました。ユニットテストでのSSLのREST API
私は自分の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();
しかし、それはパスワードとして及びchangeit
またはpassword
(私のkeytstoreのパスワード)とヌルで動作します。
このコードは、他のコンピュータでは使用できません(一般的な解決策ではありません)。あなたが許可を必要とするファイルパスにあなたのjavaホームを置くと、それはエラーをスローします。
したがって、別のトラストストアを作成し、それを使ってSSLをテストする方法はありますか?
すべてのマシンで信頼できる証明書を準備するにはどうすればよいですか? – kamaci