菜单
文档breadcrumb arrow Grafana k6breadcrumb arrow 使用 k6breadcrumb arrow 协议breadcrumb arrow SSL/TLSbreadcrumb arrow SSL/TLS 版本和密码套件
开源

SSL/TLS 版本和密码套件

为了支持测试特定的客户端配置,您可以指定连接允许使用的 SSL/TLS 版本或版本范围。您还可以指定该连接允许使用的密码套件。

⚠️ 关于密码套件和 TLS 1.3

由于底层 go 实现的限制,不支持更改 TLS 1.3 的密码套件,并且这样做没有任何效果。

限制 SSL/TLS 版本

要将 k6 限制到特定的 SSL/TLS 版本,请使用全局配置选项

JavaScript
import http from 'k6/http';

export const options = {
  tlsVersion: http.TLS_1_2,
};

export default function () {
  http.get('https://badssl.com');
}

您也可以接受一个 SSL/TLS 版本范围

JavaScript
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 允许使用的密码套件,请使用全局配置选项。您可以选择一个允许的密码套件列表

JavaScript
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_versiontls_cipher_suite 属性。

JavaScript
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