Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要在JMeter中同时使用客户端证书和服务器端证书来点击SSL连接的POST请求_Ssl_Jmeter_Ssl Certificate_Load Testing_Keystore - Fatal编程技术网

需要在JMeter中同时使用客户端证书和服务器端证书来点击SSL连接的POST请求

需要在JMeter中同时使用客户端证书和服务器端证书来点击SSL连接的POST请求,ssl,jmeter,ssl-certificate,load-testing,keystore,Ssl,Jmeter,Ssl Certificate,Load Testing,Keystore,我有一个场景,我需要在JMEter中使用服务器端证书(certificate.ca.crt)和客户端证书(Client.pem和private.key)发出POST请求,以进行SSL连接 我已经用POSTMAN配置了这些证书,它工作得很好,但是在JMeter中我是新手,我不知道如何做 经过一些研究,到目前为止,我在JMeter中做了一件事。我已经执行了下面的命令来生成一个.p12格式的文件 openssl pkcs12 -export -out certificates.p12 -inkey p

我有一个场景,我需要在JMEter中使用服务器端证书(certificate.ca.crt)和客户端证书(Client.pem和private.key)发出POST请求,以进行SSL连接

我已经用POSTMAN配置了这些证书,它工作得很好,但是在JMeter中我是新手,我不知道如何做

经过一些研究,到目前为止,我在JMeter中做了一件事。我已经执行了下面的命令来生成一个.p12格式的文件

openssl pkcs12 -export -out certificates.p12 -inkey private.key -in certificate.ca.crt -in client.pem
然后我将certificates.p12放在JMeter的bin目录下,并在JMeter的bin目录的system.properties中添加了以下属性

javax.net.ssl.keyStoreType=pkcs12    
javax.net.ssl.keyStore=certificates.p12
javax.net.ssl.keyStorePassword=password

https.keyStoreStartIndex=0
https.keyStoreEndIndex=1
在从JMeter执行API时执行此操作后,出现以下错误:

ava.lang.IllegalArgumentException: Could not create keystore: pkcs12     not found
    at org.apache.jmeter.util.SSLManager.getKeyStore(SSLManager.java:126)
    at org.apache.jmeter.util.JsseSSLManager.createContext(JsseSSLManager.java:214)
    at org.apache.jmeter.util.JsseSSLManager.getContext(JsseSSLManager.java:176)
    at org.apache.jmeter.util.HttpSSLProtocolSocketFactory.getSSLSocketFactory(HttpSSLProtocolSocketFactory.java:113)
    at org.apache.jmeter.util.HttpSSLProtocolSocketFactory.createSocket(HttpSSLProtocolSocketFactory.java:180)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:393)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
    at org.apache.jmeter.protocol.http.sampler.hc.LazyLayeredConnectionSocketFactory.connectSocket(LazyLayeredConnectionSocketFactory.java:92)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:326)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:850)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:561)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1282)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1271)
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:627)
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:551)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.security.KeyStoreException: pkcs12     not found
    at java.security.KeyStore.getInstance(KeyStore.java:851)
    at org.apache.jmeter.util.keystore.JmeterKeyStore.<init>(JmeterKeyStore.java:85)
    at org.apache.jmeter.util.keystore.JmeterKeyStore.getInstance(JmeterKeyStore.java:255)
    at org.apache.jmeter.util.SSLManager.getKeyStore(SSLManager.java:122)
    ... 27 more
Caused by: java.security.NoSuchAlgorithmException: pkcs12     KeyStore not available
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at java.security.Security.getImpl(Security.java:695)
    at java.security.KeyStore.getInstance(KeyStore.java:848)
    ... 30 more

ava.lang.IllegalArgumentException:无法创建密钥库:找不到pkcs12
位于org.apache.jmeter.util.SSLManager.getKeyStore(SSLManager.java:126)
位于org.apache.jmeter.util.JsseSSLManager.createContext(JsseSSLManager.java:214)
位于org.apache.jmeter.util.JsseSSLManager.getContext(JsseSSLManager.java:176)
位于org.apache.jmeter.util.HttpSSLProtocolSocketFactory.getSSLSocketFactory(HttpSSLProtocolSocketFactory.java:113)
位于org.apache.jmeter.util.HttpSSLProtocolSocketFactory.createSocket(HttpSSLProtocolSocketFactory.java:180)
位于org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:393)
位于org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
位于org.apache.jmeter.protocol.http.sampler.hc.LazyLayeredConnectionSocketFactory.connectSocket(LazyLayeredConnectionSocketFactory.java:92)
位于org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
位于org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:326)
位于org.apache.http.impl.conn.poolghttpclientconnectionmanager.connect(poolghttpclientconnectionmanager.java:374)
位于org.apache.http.impl.execchain.MainClientExec.buildRoute(MainClientExec.java:393)
位于org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
位于org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
位于org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
位于org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
位于org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
在org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
位于org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:850)
位于org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:561)
位于org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
位于org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1282)
位于org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1271)
位于org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:627)
位于org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:551)
位于org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490)
位于org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
运行(Thread.java:748)
原因:java.security.KeyStoreException:pkcs12未找到
位于java.security.KeyStore.getInstance(KeyStore.java:851)
位于org.apache.jmeter.util.keystore.JmeterKeyStore.(JmeterKeyStore.java:85)
位于org.apache.jmeter.util.keystore.JmeterKeyStore.getInstance(JmeterKeyStore.java:255)
位于org.apache.jmeter.util.SSLManager.getKeyStore(SSLManager.java:122)
... 还有27个
原因:java.security.NoSuchAlgorithmException:pkcs12密钥库不可用
位于sun.security.jca.GetInstance.GetInstance(GetInstance.java:159)
位于java.security.security.getImpl(security.java:695)
位于java.security.KeyStore.getInstance(KeyStore.java:848)
... 30多

期待你的回答。谢谢大家!

看起来在
pkcs12
之后有很多空格,所以它是
pkcs12

如果删除尾随空格,它应该可以正常工作

我还认为,将这个
javax.net.ssl.keyStoreType
属性指定为

更多信息:

关于服务器端证书,您可以

JMeter HTTP采样器配置为接受所有证书,无论是否可信,也不管有效期等。这是为了在测试服务器时提供最大的灵活性


非常感谢你。你的解决方案对我有效。
pkcs12
之后的空格是我的system.properties文件中的问题。所以它相当于pkcs12