SSL/TLS 客户端证书
关于 TLS 证书的讨论通常是关于客户端如何验证服务器。然而,TLS 和 k6 都支持反向过程,即服务器验证客户端。
要使用客户端证书,请指定全局配置选项,告诉 k6 如何将公共证书和私钥映射到它们适用的域。您可以从本地文件加载证书和密钥,或将其作为字符串嵌入到脚本中。
从本地文件加载证书和密钥
要从本地文件加载证书和密钥,请使用内置函数 open(...)
import http from 'k6/http';
export const options = {
tlsAuth: [
{
domains: ['example.com'],
cert: open('./mycert.pem'),
key: open('./mycert-key.pem'),
},
],
};
export default function () {
http.get('https://example.com/');
}
从嵌入字符串加载证书和密钥
要从嵌入字符串加载证书和密钥,请使用此片段。(注意使用模板字面量表示多行字符串)
注意
这些只是示例密钥。
import http from 'k6/http';
const CERT = `-----BEGIN CERTIFICATE-----
MIIFgTCCA2kCAQEwDQYJKoZIhvcNAQEFBQAwgYExCzAJBgNVBAYTAlNFMRcwFQYD
VQQIEw5TdG9ja2hvbG1zIExhbjESMBAGA1UEBxMJU3RvY2tob2xtMRcwFQYDVQQK
...
/n5QrTGhP51P9Q1THzRfn6cNCDwzSTMVEJr40QhuTJQWASe3miuFmZoG5ykmGqVm
fWQRiQyM330s9vTwFy14J2Bxe4px6cyy7rVXvYL2LvfA4L0T7/x1nUULw+Mpqun1
R3XRJWqGDjBKXr5q8VatdQO1QLgr
-----END CERTIFICATE-----`;
const KEY = `-----BEGIN RSA PRIVATE KEY-----
KsZVVI1FTX+F959vqu1S02T+R1JM29PkIfJILIXapKQfb0FWrALU5xpipdPYBWp7
j5iSp06/7H8ms87Uz9BrOA6rytoRSE0/wEe5WkWdBBgLLPpfOSWZsAA5RGCB2n+N
...
Dk+frzKuiErHFN7HOHAQannui4eLsY0ehYMByowgJIUGzIJyXR6O19hVhV7Py66u
X7/Jy01JXn83LuWdpaPAKU+B42BLP0IGXt5CocPms07HOdtJ/wm2zwHTyfjn9vu+
HO/dQr6a7DhRu2lLI9Sc983NwRqDKICZQQ/+gqWk8BgQZ1yI9O4AYkzywzAEk3py
-----END RSA PRIVATE KEY-----`;
export const options = {
tlsAuth: [
{
domains: ['example.com'],
cert: CERT,
key: KEY,
},
],
};
export default function () {
http.get('https://example.com/');
}