使用 haproxy 默认密码配置分析 openssl 密码的输出

使用 haproxy 默认密码配置分析 openssl 密码的输出

我正在尝试分析默认 haproxy 配置在审计目的中使用的不同加密算法,因为它显然包含一些已弃用的内容。配置行如下:

ssl-default-bind-ciphers  !SSLv2:kEECDH:kRSA:kEDH:kPSK:+3DES:!aNULL:!eNULL:!MD5:!EXP:!RC4:!SEED:!IDEA:!DES

我使用 OpenSSL 来扩展算法列表openssl ciphers '$list_here'

在我获得的所有算法中,我得到了以下对我来说看起来很奇怪的算法:

AES128-GCM-SHA256
AES128-SHA256
AES128-SHA
DES-CBC3-SHA

通常,加密算法遵循以下格式:

KeyExchangeAlgo - AuthenticationAlgo - EncryptionAlgo - IntegrityCheckAlgo

据我所知,AES 不是密钥交换算法,DES 也不是;因此,哪种算法可用于执行此任务?而且不可能是无,因为当我添加!kNULL到命令时,我获得了完全相同的列表!

此外,haproxy 配置行明确禁用了 DES 算法;但是,它却被 openssl 命令所消耗:

DES-CBC3-SHA

非常感谢您的帮助!

答案1

OpenSSL 使用的密码套件名称与 RFC 中的标准名称不同以及许多(大多数?)其他实现,除了最近添加的和结构不同的 TLS1.3“套件”。请参阅ciphers系统上的手册页或在网上在标题“密码套件名称”大约一半的位置和/或我的答案在https://stackoverflow.com/questions/36463429/map-ssl-tls-cipher-suites-and-their-openssl-equivalents对于正向算法。反向计算您的值:

AES128-GCM-SHA256 = TLS_RSA_WITH_AES128_GCM_SHA256 (omit TLS WITH always, RSA for akRSA)
AES128-SHA256     = TLS_RSA_WITH_AES128_CBC_SHA256 (same and omit CBC sometimes)
AES128-SHA        = TLS_RSA_WITH_AES128_CBC_SHA (ditto)
DES-CBC3-SHA      = TLS_RSA_WITH_3DES_EDE_CBC_SHA (same and swap 3DES_EDE_CBC to DES-CBC3; the 3 means triple-DES)

此外,haproxy 配置行明确禁用了 DES 算法;但是,它被 openssl 命令占用:DES-CBC3-SHA

(Nit:你的意思是扩大...和扩大;expend[ed] 的意思是‘用完’,就像已经花掉的钱或已经爆炸的炸弹。)

OpenSSL 认为原始/单 DES 和三重 DES 是不同的算法。该密码字符串禁用单 DES,但不禁用三重 DES;事实上,+3DES显式添加三重 DES 算法位于列表末尾,因此优先级较低如果您使用服务器优先级。同样,您可以分别选择 AES128 套件和 AES256 套件,尽管两者都使用 AES 算法;在这种情况下,还有一个选项“AES”可以选择这两个组。

相关内容