如何让Apache JMeter使用(受密码保护的)jks密钥库中的(受密码保护的)密钥

时间:2019-03-07 17:23:25

标签: jmeter ssl-certificate password-protection

上下文

我有一个密钥库keystore.jks),该密钥库受密码保护
我可以通过提供

让jmeter使用该商店的密钥
  • -Djavax.net.ssl.keyStore
  • -Djavax.net.ssl.keyStorePassword

具有适当的值,只要密钥本身不受密码保护。

但是,我的特定密钥库包含多个密钥,每个密钥都需要密码来检索它们

如何使用普通的旧Java访问密钥:

String keyStorePath = "/keystore.jks";
char[] keyStorePassword = "keyStorePassword".toCharArray();

String keyAlias = "keyAlias";
char[] keyPassword= "keyPassword".toCharArray();


KeyStore keyStore = KeyStore.getInstance("JKS");
try (InputStream is = this.getClass().getResourceAsStream(keyStorePath )) {
    keyStore.load(is, keyStorePassword);
}

PrivateKey privateKey = (PrivateKey) keyStore.getKey(keyAlias, keyPassword);
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(keyAlias);

我如何在JMeter中检索和使用此类密钥?

这是问题。

JMeter的Keystore Configuration不允许您指定密钥的密码。

1 个答案:

答案 0 :(得分:0)

环顾四周后,我得出结论认为目前(JMeter 5.0)无法实现。

通过在启动时提供以下属性来获取jmeter以使用密钥库中的证书:

  • -Djavax.net.ssl.keyStore
  • -Djavax.net.ssl.keyStorePassword

商店中的证书应与商店使用相同的密码,然后当您使用Keystore Configuration指定(持有证书的变量)证书别名时,它们将被毫无问题地拾取。