根据OpenSSL TLSv1.3 文档
OpenSSL 已实现对五个 TLSv1.3 密码套件的支持,如下所示:
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
- TLS_AES_128_CCM_8_SHA256
- TLS_AES_128_CCM_SHA256
由于 TLSv1.2 及更低版本的密码套件与 TLSv1.3 的密码套件的工作方式之间存在重大差异,因此它们在 OpenSSL 中的配置也不同。
默认情况下,上述密码套件中的前三个默认启用。这意味着如果您没有明确的密码套件配置,那么您将自动使用这三个并且能够协商 TLSv1.3。请注意,更改 TLSv1.2 及以下密码列表对 TLSv1.3 密码套件配置没有影响。
因此,如果您只是运行,openssl ciphers
那么您将只使用默认密码列表,而看不到最后两个。
但是,如果您明确要求它们(使用ciphersuites
TLSv1.3 的新选项),那么如果您的 OpenSSL 版本支持它们,您将看到它们:
openssl ciphers -tls1_3 -v -s -ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256
TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
TLS_AES_128_CCM_8_SHA256 TLSv1.3 Kx=any Au=any Enc=AESCCM8(128) Mac=AEAD
TLS_AES_128_CCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESCCM(128) Mac=AEAD
您还需要 ECDSA 证书,而不是通常的 RSA 证书,才能使用此处讨论的最后两个密码:https ://github.com/openssl/openssl/issues/8297 。
也不知道有任何浏览器实现了这些 CCM 密码,因此即使您确实将其全部整理以使其正常工作,也不确定您目前将使用什么来通过该密码进行连接。