OpenSSL 1.1.1 它仅支持 5 个密码中的 3 个 TLS 1.3

OpenSSL 1.1.1 it supports only 3 out of 5 ciphers TLS 1.3

我有一个使用 Apache Web 服务器和 OpenSSL 1.1.1 的简​​单站点。我已经按预期配置了所有内容,问题是 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 显示错误。

Proof that the first three are correctly picked

the error showed when a pick the last two ciphers

the code from httpd-ssl.conf 在这里,我只更改了没有其他选择的密码,因为前三个密码有效。

然后我也去检查openssl.exe有没有问题。我发现最后两个密码不在密码列表中 supported/or。

cipherlist via openssl

如何将最后两个密码添加到列表中以便我可以使用它们?或者我需要添加什么才能使用它们?我正在使用它进行测试。 任何帮助将不胜感激。抱歉我的英语不好。

根据 OpenSSL TLSv1.3 documentation

OpenSSL has implemented support for five TLSv1.3 ciphersuites as follows:

  • 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

Due to the major differences between the way that ciphersuites for TLSv1.2 and below and ciphersuites for TLSv1.3 work, they are configured in OpenSSL differently too.

By default the first three of the above ciphersuites are enabled by default. This means that if you have no explicit ciphersuite configuration then you will automatically use those three and will be able to negotiate TLSv1.3. Note that changing the TLSv1.2 and below cipher list has no impact on the TLSv1.3 ciphersuite configuration.

所以如果你只是 运行 openssl ciphers 那么你将只使用默认的密码列表而不会看到最后两个。

但是,如果您明确要求它们(使用 TLSv1.3 的新 ciphersuites 选项),那么如果您的 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 密码,所以现在不确定您将使用什么通过它进行连接,即使您确实对它进行了整理以使其正常工作。

转到文件 - ssl.h。 查找宏 - "TLS_DEFAULT_CIPHERSUITES".

将此宏值更改为 -

#define TLS_DEFAULT_CIPHERSUITES “TLS_AES_256_GCM_SHA384:”
“TLS_CHACHA20_POLY1305_SHA256:”
“TLS_AES_128_CCM_SHA256:”
“TLS_AES_128_CCM_8_SHA256:”
“TLS_AES_128_GCM_SHA256”

所有 5 个密码都将开始工作。您可以使用命令检查所有密码。 openssl s_client -tls1_3 -ciphersuites 'TLS_AES_128_CCM_8_SHA256' -connect