对安全性有要求的网站一般使用https来加密传输的请求和响应。https离不开证书,关于证书不在多说。Apache的HttpClient支持https,
下面是官方的样例程序,程序中使用了my.store这个文件,
这个文件不是网站的证书,而是一份包含自己密码的自己的证书库。这个文件是需要自己生成的,使用jdk中的keytool命令可以很方便的生成my.store文件。步骤如下(以支付宝为例):
- 浏览器(以chrome为例)访问https://www.alipay.com/,点击域名左侧的小锁,可以查看支付宝的证书信息
- 将支付包的证书信息导出,证书格式有很多中,der、cer等。随便选择即可。
- 命令行或者shell执行
keytool
-import -alias "my alipay cert" 别名
-file www.alipay.com.cert 导出的证书
-keystore my.store,自己起名
如果keytool命令不识别,去检查一下jdk的环境变量是否设置正确。
”my alipay cert”是个别名,随便取。
“www.alipay.com.cert”这个文件就是从浏览器中导出的支付宝的证书。
“my.store”是生成的自己 的证书库文件。回车执行,效果如下:
Jmeter是apache一款开源、小巧的性能测试工具,平时测试web http协议经常使用,其实jmeter同样支持ssl。方法如下:
- 需要装有目标网站证书的密钥库,即filename.store(文件名随意).这个文件里包含目标网站的证书和自己的密码,这个东西需要我们自己生成,生成方法参见:CloseableHttpClient加载证书来访问https网站
- 将生成好的filename.store放到随意目录中(比如/home/victor/filename.store)。修改jmeter配置文件,将filename.store路径和自己的密码配置进去,这里以jmeter-2.10为例。
- 配置文件为apache-jmeter-2.10/bin/system.properties,配置如下:
- # Keystore properties (client certificates)
- # Location
- javax.net.ssl.keyStore=/home/victor/filename.store //密钥库路径
- #
- #The password to your keystore
- javax.net.ssl.keyStorePassword=yeetrack.com //这个是生成密钥库时,设置的密码
- 重启jmeter,如果是自己填写请求,https的端口一般是443,不再是http的80端口(当然也不一定是443,这个是可以配置的)。构造一个https请求,应该可以发送出去了;由于添加了密钥库,jmeter也可以录制https的请求了。
时间: 2024-12-22 10:25:42