K6跳过TLS验证无效,报x509未知证书签名错误求助
k6 Prometheus Remote Write TLS验证失败问题解决
问题背景
尝试跳过TLS验证后,k6的Prometheus Remote Write输出仍抛出证书验证错误:
msg="Failed to send the time series data to the endpoint" error="HTTP POST request failed: Post "https://.../api/v1/push/": tls: failed to verify certificate: x509: certificate signed by unknown authority" output="Prometheus remote write"
当前TLS握手指标:
http_req_tls_handshaking.......: avg=208.3ms min=208.3ms med=208.3ms max=208.3ms p(90)=208.3ms p(95)=208.3ms
已尝试的无效方案:
- 脚本options中设置
insecureSkipTLSVerify: true - 使用命令行参数
--insecure-skip-tls-verify,执行命令:
k6 run -o experimental-prometheus-rw -e 'K6_PROMETHEUS_RW_SERVER_URL=https://****/api/v1/push' --insecure-skip-tls-verify k6/sample/prfm_hpp.js
解决方法
1. 为Prometheus输出插件单独配置跳过TLS验证
k6的全局TLS跳过配置仅对脚本内的HTTP请求生效,Prometheus Remote Write插件有独立的TLS控制参数,需通过以下方式设置:
环境变量方式(推荐):
k6 run -o experimental-prometheus-rw -e 'K6_PROMETHEUS_RW_SERVER_URL=https://****/api/v1/push' -e 'K6_PROMETHEUS_RW_INSECURE_SKIP_TLS_VERIFY=true' k6/sample/prfm_hpp.js配置文件方式:
创建k6-config.json:{ "output": { "experimental-prometheus-rw": { "serverURL": "https://****/api/v1/push", "insecureSkipTLSVerify": true } } }运行时指定配置文件:
k6 run -c k6-config.json k6/sample/prfm_hpp.js
2. 升级k6到最新版本
旧版本的experimental-prometheus-rw插件可能未实现insecureSkipTLSVerify参数,升级到最新稳定版可解决兼容性问题:
# Linux(Debian/Ubuntu)示例升级命令 sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69 echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list sudo apt update && sudo apt install k6
3. 添加CA证书到系统信任链(安全替代方案)
若不允许跳过验证,可将Prometheus服务的CA证书导入k6运行环境的信任存储:
- 将CA证书文件(如
prom-ca.crt)复制到系统CA目录,例如Ubuntu的/usr/local/share/ca-certificates/ - 更新系统证书缓存:
sudo update-ca-certificates - 重新运行k6脚本即可自动通过证书验证
内容的提问来源于stack exchange,提问作者rahulatrey
相关产品推荐
相关产品推荐

