背景:
工作需要对下面接口进行压测,走的是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>
最后,仔细思索,觉得请求的端口不是前端页面的地址,因此拿前端的证书不可用,经过查询资料发现可以通过以下方式解决
步骤:
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
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
4.在 JMeter 中配置 PKCS12 密钥库
右键点击线程组并选择 添加 > 配置元素 > SSL 管理器 选择文件
5运行 输入密码
密码是mykeystorepassword我设置的是123456