如何让 Apache JMeter 使用来自(受密码保护的)jks 密钥库的(受密码保护的)密钥
How can I let Apache JMeter use (password protected) keys from a (password protected) jks keystore
上下文
我有一个 密钥库 (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
不允许您指定密钥的密码。
环顾四周后,我得出的结论是目前 (JMeter 5.0) 不可能做到这一点。
通过在启动时提供这些属性,让 jmeter 使用密钥库中的证书:
-Djavax.net.ssl.keyStore
-Djavax.net.ssl.keyStorePassword
商店内的证书应具有与商店相同的密码,然后当您使用 Keystore Configuration 指定(保存的变量)证书别名时,它们可以毫无问题地被提取。
将key和value(.crt)文件转换为单个文件并在Jmeter中使用
步骤
- 打开命令提示符
- 转到放置键和值的目录
- 运行 命令下方
openssl pkcs12 -export -out jmeterkeystore.p12 -inkey your.private.key -in your.certificate
以上命令创建一个.p12类型的文件
4. 将.p12文件转为jks类型,使用下面的命令
keytool -importkeystore -srckeystore jmeterkeystore.p12 -srcstoretype pkcs12 -
destkeystore MY_KEYSTORE.jks -deststoretype jks -deststorepass changeit
在 jmeter bin 文件夹中,打开 system.properties 文件并设置以下属性
javax.net.ssl.keyStoreType=jks
javax.net.ssl.keyStore=C:/Dev/cer/
javax.net.ssl.keyStore密码=
完成你现在可以运行你的脚本
上下文
我有一个 密钥库 (keystore.jks
) 受密码保护。
我可以通过提供
-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
不允许您指定密钥的密码。
环顾四周后,我得出的结论是目前 (JMeter 5.0) 不可能做到这一点。
通过在启动时提供这些属性,让 jmeter 使用密钥库中的证书:
-Djavax.net.ssl.keyStore
-Djavax.net.ssl.keyStorePassword
商店内的证书应具有与商店相同的密码,然后当您使用 Keystore Configuration 指定(保存的变量)证书别名时,它们可以毫无问题地被提取。
将key和value(.crt)文件转换为单个文件并在Jmeter中使用 步骤
- 打开命令提示符
- 转到放置键和值的目录
- 运行 命令下方
openssl pkcs12 -export -out jmeterkeystore.p12 -inkey your.private.key -in your.certificate
以上命令创建一个.p12类型的文件 4. 将.p12文件转为jks类型,使用下面的命令
keytool -importkeystore -srckeystore jmeterkeystore.p12 -srcstoretype pkcs12 -
destkeystore MY_KEYSTORE.jks -deststoretype jks -deststorepass changeit
在 jmeter bin 文件夹中,打开 system.properties 文件并设置以下属性
javax.net.ssl.keyStoreType=jks javax.net.ssl.keyStore=C:/Dev/cer/
javax.net.ssl.keyStore密码=
完成你现在可以运行你的脚本