背景:
工作需要对下面接口进行压测,走的是https 带证书的请求
curl -v -X POST -u acsuser:admin@20232023
--cert '/home/bdgw/ssl/server.crt'
--key '/home/bdgw/ssl/server.key'
-H "Content-Type: application/json"
-d '{"thirdAlarmId":"comp20240812212417558vCcLZaTKX2",
"eventCode":"ALARM_TRANSFER_FAIL","alarmTime":"2024-08-14 21:00:17"}'
--insecure "https://172.16.21.124:10005/aes/alarm/report"
网上好多教程是走前端页面拿的证书进行转换 ,尝试多次以后 执行依旧报错
<html>
<head><title>400 No required SSL certificate was sent</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>No required SSL certificate was sent</center>
<hr><center>nginx</center>
</body>
</html>
https://i-blog.csdnimg.cn/direct/85a29e0b76bd4fefb6ceaeb95933eff5.png" alt="在这里插入图片描述" />
最后,仔细思索,觉得请求的端口不是前端页面的地址,因此拿前端的证书不可用,经过查询资料发现可以通过以下方式解决
步骤:
1.找到 客户端证书 (server.crt) 和私钥 (server.key)
从上述接口中得知 证书和私钥地址
/home/bdgw/ssl/
2.将客户端证书 (server.crt) 和私钥 (server.key) 结合成一个单一的 PKCS12 密钥库文件
将证书和密钥文件合并为一个 PEM 文件:
cat /home/bdgw/ssl/server.crt /home/bdgw/ssl/server.key > /home/bdgw/ssl/client.pem
https://i-blog.csdnimg.cn/direct/84630733a0c8423d8faeddd676994434.png" alt="在这里插入图片描述" />
3.创建 PKCS12 密钥库:
将 PEM 文件转换为 PKCS12 密钥库文件:
openssl pkcs12 -export -out /home/bdgw/ssl/client.p12 -in /home/bdgw/ssl/client.pem -name client -passout pass:mykeystorepassword
替换 mykeystorepassword
为您能记住的安全密码。我使用的是123456
https://i-blog.csdnimg.cn/direct/b5d8fcf1815f4cdeb5b7b417f3dda4cc.png" alt="[图片]" />
4.在 JMeter 中配置 PKCS12 密钥库
右键点击线程组并选择 添加 > 配置元素 > SSL 管理器 选择文件
https://i-blog.csdnimg.cn/direct/43d4a3b7defe4eb5869325883de76b58.png" alt="在这里插入图片描述" />
5运行 输入密码
密码是mykeystorepassword我设置的是123456
https://i-blog.csdnimg.cn/direct/6917248127e94dde86a943df95af5627.png" alt="[图片]" />
https://i-blog.csdnimg.cn/direct/a767bafc16134a18b837a9b93ef4a3ad.png" alt="[图片]" />