通过需要客户端证书的反向代理发送HTTP GET / POST

问题描述 投票:3回答:1

我正在尝试将HTTP GET / POST请求发送到隐藏在反向代理后面的应用程序。与反向代理的通信通过https进行,并且代理需要客户端证书。

看来密钥库证书(gatling.http.ssl.keyStore.file)未被用于向反向代理进行身份验证。我认为这是因为:

  • 如果我在未指定代理的情况下请求https://reverse-proxy-address,则会收到答复(与使用客户端证书访问浏览器中的URL基本相同)->证书用于请求。
  • 如果我使用http.proxy(Proxy(“ reverse-proxy-address”,port))指定代理,并向http://hidden-url发送了请求,我会收到“ org.asynchttpclient.exception.RemotelyClosedException:远程关闭”(加特林2.3.1)或“ java.io.IOException:过早关闭”(加特林3.0.3)

我没有发现提示,我如何指定将客户端证书用于反向代理的身份验证。可能客户端证书已用于通过反向代理进行身份验证,而其他配置未正确配置。我不知道如何进一步分析...

希望其他人已经面临相同的问题,并且知道解决方案。还暗示着我可以更深入地学习了!

谢谢

reverse-proxy gatling client-certificates
1个回答
0
投票
我收到了CRT.pem和KEY.pem文件。我基于密钥对创建了p12 cert。

openssl pkcs12 -export -in client1-crt.pem -inkey client1-key.pem -out cert.p12

然后我创建了存储并将证书导入到密钥库。

keytool -importkeystore -deststorepass mycert -destkeystore filename-new-keystore.jks -srckeystore cert.p12 -srcstoretype PKCS12

下一步是在gatling.conf中设置正确的路径(取决于OS)

我的加特林机密会议:

gatling { http { ssl { keyStore { type = "PKCS12" file = "/Users/lukasz/cert.p12" password = "" } trustStore { type = "" file = "/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/security/cacerts" password = "changeit" } } } }

这样,我就可以在Gatling中使用自定义证书。我不确定这是解决方法还是这是通过JVM处理自定义证书的正确方法。

© www.soinside.com 2019 - 2024. All rights reserved.