Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.13.2. 使用 TLS 的实现

红帽企业 Linux 7 随附了多个功能全面的 TLS 实施。本节介绍了 OpenSSLGnuTLS 的配置。有关如何在独立应用程序中配置 TLS 支持的说明,请参阅 第 4.13.3 节 “配置特定应用程序”
可用的 TLS 实施为各种密码套件提供支持,它们定义建立和使用 TLS安全的通信时附带的所有元素。
在考虑 第 4.13.1 节 “选择 Algorithms 来启用” 中列出的建议时,使用不同实施中包含的工具列出并指定密码套件,为您的用例提供最佳安全性。然后,生成的密码套件可用于配置各个应用程序协商和安全连接的方式。
重要
在每次更新或升级您使用的 TLS 实施或使用该实施的应用程序后,请务必检查您的设置。新版本可能会引入您不想启用的新密码套件,并且您的当前配置没有禁用。

4.13.2.1. 在 OpenSSL 中使用 Cipher Suite

OpenSSL 是一个工具包和加密库,支持 SSLTLS 协议。在 Red Hat Enterprise Linux 7 中,/etc/pki/tls/openssl.cnf 中提供了一个配置文件。这个配置文件的格式在 config(1) 中进行描述。另请参阅 第 4.7.9 节 “配置 OpenSSL”
要获得安装 OpenSSL 所支持的所有密码套件的列表,请使用带有 ciphers 子命令的openssl 命令,如下所示:
~]$ openssl ciphers -v 'ALL:COMPLEMENTOFALL'
将其他参数(在 OpenSSL 文档中称为密码字符串和 关键字 )传递给 ciphers 子命令,以缩小输出范围。特殊关键字可用于仅列出满足特定条件的套件。例如,要只列出定义为属于 HIGH 组的套件,请使用以下命令:
~]$ openssl ciphers -v 'HIGH'
如需可用关键字和密码字符串列表,请参阅 ciphers(1) 手册页。
要获得满足 第 4.13.1 节 “选择 Algorithms 来启用” 中概述的建议的密码套件列表,请使用类似如下的命令:
~]$ openssl ciphers -v 'kEECDH+aECDSA+AES:kEECDH+AES+aRSA:kEDH+aRSA+AES' | column -t
ECDHE-ECDSA-AES256-GCM-SHA384  TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AESGCM(256)  Mac=AEAD
ECDHE-ECDSA-AES256-SHA384      TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AES(256)     Mac=SHA384
ECDHE-ECDSA-AES256-SHA         SSLv3    Kx=ECDH  Au=ECDSA  Enc=AES(256)     Mac=SHA1
ECDHE-ECDSA-AES128-GCM-SHA256  TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AESGCM(128)  Mac=AEAD
ECDHE-ECDSA-AES128-SHA256      TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AES(128)     Mac=SHA256
ECDHE-ECDSA-AES128-SHA         SSLv3    Kx=ECDH  Au=ECDSA  Enc=AES(128)     Mac=SHA1
ECDHE-RSA-AES256-GCM-SHA384    TLSv1.2  Kx=ECDH  Au=RSA    Enc=AESGCM(256)  Mac=AEAD
ECDHE-RSA-AES256-SHA384        TLSv1.2  Kx=ECDH  Au=RSA    Enc=AES(256)     Mac=SHA384
ECDHE-RSA-AES256-SHA           SSLv3    Kx=ECDH  Au=RSA    Enc=AES(256)     Mac=SHA1
ECDHE-RSA-AES128-GCM-SHA256    TLSv1.2  Kx=ECDH  Au=RSA    Enc=AESGCM(128)  Mac=AEAD
ECDHE-RSA-AES128-SHA256        TLSv1.2  Kx=ECDH  Au=RSA    Enc=AES(128)     Mac=SHA256
ECDHE-RSA-AES128-SHA           SSLv3    Kx=ECDH  Au=RSA    Enc=AES(128)     Mac=SHA1
DHE-RSA-AES256-GCM-SHA384      TLSv1.2  Kx=DH    Au=RSA    Enc=AESGCM(256)  Mac=AEAD
DHE-RSA-AES256-SHA256          TLSv1.2  Kx=DH    Au=RSA    Enc=AES(256)     Mac=SHA256
DHE-RSA-AES256-SHA             SSLv3    Kx=DH    Au=RSA    Enc=AES(256)     Mac=SHA1
DHE-RSA-AES128-GCM-SHA256      TLSv1.2  Kx=DH    Au=RSA    Enc=AESGCM(128)  Mac=AEAD
DHE-RSA-AES128-SHA256          TLSv1.2  Kx=DH    Au=RSA    Enc=AES(128)     Mac=SHA256
DHE-RSA-AES128-SHA             SSLv3    Kx=DH    Au=RSA    Enc=AES(128)     Mac=SHA1
以上命令省略了所有不安全的密码,优先选择临时销售曲线 Diffie-Hellman 密钥交换和 ECDSA 密码,省略 RSA 密钥交换 (从而确保完美的转发保密 )。
请注意,这是一种非常严格的配置,可能需要在现实场景中宽松条件,以便能够与更广泛的客户端兼容。