SSL/TLS 版本和密码套件
为了支持测试特定的客户端配置,您可以指定连接允许使用的 SSL/TLS 版本或版本范围。您还可以指定该连接允许使用的密码套件。
⚠️ 关于密码套件和 TLS 1.3
由于底层 go 实现的限制,不支持更改 TLS 1.3 的密码套件,并且这样做没有任何效果。
限制 SSL/TLS 版本
要将 k6 限制到特定的 SSL/TLS 版本,请使用全局配置选项
import http from 'k6/http';
export const options = {
tlsVersion: http.TLS_1_2,
};
export default function () {
http.get('https://badssl.com');
}
您也可以接受一个 SSL/TLS 版本范围
import http from 'k6/http';
export const options = {
tlsVersion: {
min: http.SSL_3_0,
max: http.TLS_1_2,
},
};
export default function () {
http.get('https://badssl.com');
}
可供选择的版本
以下是可供选择的 SSL/TLS 版本列表,从最旧版本到最新版本排序。
http.SSL_3_0
http.TLS_1_0
http.TLS_1_1
http.TLS_1_2
http.TLS_1_3
限制密码套件
要限制 k6 允许使用的密码套件,请使用全局配置选项。您可以选择一个允许的密码套件列表
import http from 'k6/http';
export const options = {
tlsCipherSuites: ['TLS_RSA_WITH_RC4_128_SHA', 'TLS_RSA_WITH_AES_128_GCM_SHA256'],
};
export default function () {
http.get('https://badssl.com');
}
检查请求中使用的 SSL/TLS 版本和密码套件
您还可以检查使用了哪个 SSL/TLS 版本和密码套件。为此,请查看响应对象的 tls_version
和 tls_cipher_suite
属性。
import http from 'k6/http';
import { check } from 'k6';
export default function () {
const res = http.get('https://sha256.badssl.com');
check(res, {
'is TLSv1.2': (r) => r.tls_version === http.TLS_1_2,
'is sha256 cipher suite': (r) => r.tls_cipher_suite === 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
});
}
可供选择的密码套件
以下是可用的 SSL/TLS 密码套件列表
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
⚠️ 不同 k6 构建版本之间的差异
此列表反映了最新官方构建版本中可用的密码套件。如果您使用的是自定义构建的 k6,则可用密码套件将取决于您用于编译的 Go 版本,请参见 https://golang.ac.cn/pkg/crypto/tls/#pkg-constants。