我根据 Ubuntu 20.04 安装了 OpenSSL 1.1.1f,我特别希望启用TLS v1.2 套件TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8
( )。ECDHE-ECDSA-AES128-CCM8
如何配置 OpenSSL 以允许将该密码套件用于其他使用 OpenSSL 安装的 TLS 应用程序?
关于我的用例的详细信息:我有一个 .NET(6) 应用程序,并且.NET 使用当前的 OpenSSL 1.1.1 或更高版本安装作为Linux 上的底层 TLS 提供程序。因此,当该应用程序使用 OpenSSL 时,需要将 OpenSSL 配置为允许 CCM 密码套件。(它将使用openssl.cnf
as per openssl version -d
)
我在 OpenSSL 手册的配置部分看到我有兴趣配置的模块是ssl_conf
,因此我创建了以下 cnf:
openssl_conf = default_conf
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
CipherString = ECDHE-ECDSA-AES128-CCM8
但这不允许应用使用 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8。当我的 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 独占客户端尝试连接时,它会出现握手 40 失败,因为应用程序内部会抛出一个'Interop.OpenSsl.SslException' in System.Net.Security.dll
但是,我确认此配置文件有效,因为如果我使用以下 cnf 而不是 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 作为密码字符串中的唯一过滤器,那么应用程序可以专门使用 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 并且它可以按预期工作(...GCM_SHA256 专用客户端可以连接) :
...
[system_default_sect]
CipherString = ECDHE-RSA-AES128-GCM-SHA256
如何启用 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8?
而且我不确定如何确认 CCM 的启用...我希望当我运行openssl ciphers -v
(没有密码字符串过滤器)时,我会看到 CCM8 被列出,就像 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 被列出一样。
我阅读了这本烹饪书的配置部分:https ://www.feistyduck.com/library/openssl-cookbook/online/openssl-command-line/configuration.html ,但我认为我需要一些有经验的建议来解释为什么我不能只使用 CCM8。