4.3. 在应用程序中强化 TLS 配置
在 RHEL 中,系统范围的加密策略 提供了一种方便的方法,来确保您的使用加密库的应用程序不允许已知的不安全协议、密码或算法。
如果要使用自定义加密设置来强化与 TLS 相关的配置,您可以使用本节中描述的加密配置选项,并以最少的需求量覆盖系统范围的加密策略。
无论您选择使用什么配置,请始终确保您的服务器应用程序强制实施 服务器端密码顺序,以便使用的密码套件由您配置的顺序来决定。
4.3.1. 将 Apache HTTP 服务器配置为使用 TLS
Apache HTTP 服务器
可以使用 OpenSSL
和 NSS
库来满足其 TLS 的需求。RHEL 8 通过 eponymous 软件包提供 mod_ssl
功能:
# yum install mod_ssl
mod_ssl
软件包将安装 /etc/httpd/conf.d/ssl.conf
配置文件,该文件可用来修改 Apache HTTP 服务器
与 TLS 相关的设置。
安装 httpd-manual
软件包以获取 Apache HTTP 服务器
的完整文档,包括 TLS 配置。/etc/httpd/conf.d/ssl.conf
配置文件中的指令在 /usr/share/httpd/manual/mod_ssl.html
文件中详细介绍。/usr/share/httpd/manual/ssl/ssl/ssl_howto.html
文件中描述了各种设置的示例。
修改 /etc/httpd/conf.d/ssl.conf
配置文件中的设置时,请确保至少考虑以下三个指令:
SSLProtocol
- 使用这个指令指定您要允许的 TLS 或者 SSL 版本。
SSLCipherSuite
- 使用这个指令来指定您首选的密码套件或禁用您要禁止的密码套件。
SSLHonorCipherOrder
-
取消注释并将此指令设置为
on
,以确保连接的客户端遵循您指定的密码顺序。
例如,只使用 TLS 1.2 和 1.3 协议:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
如需更多信息,请参阅 部署不同类型的服务器 文档中的 在 Apache HTTP 服务器上配置 TLS 加密 一章。
4.3.2. 将 Nginx HTTP 和代理服务器配置为使用 TLS
要在 Nginx
中启用 TLS 1.3 支持,请将 TLSv1.3
值添加到 /etc/nginx/nginx.conf
配置文件的 server
部分的 ssl_protocols
选项:
server { listen 443 ssl http2; listen [::]:443 ssl http2; .... ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers .... }
如需更多信息,请参阅 部署不同类型的服务器 文档中的 向 Nginx web 服务器添加 TLS 加密 一章。
4.3.3. 将 Dovecot 邮件服务器配置为使用 TLS
要将 Dovecot
邮件服务器的安装配置为使用 TLS,请修改 /etc/dovecot/conf.d/10-ssl.conf
配置文件。您可以在 /usr/share/doc/dovecot/wiki/SSL.DovecotConfiguration.txt
文件中找到一些基本配置指令的说明,该文件与 Dovecot
的标准安装一起安装。
修改 /etc/dovecot/conf.d/10-ssl.conf
配置文件中的设置时,请确保至少考虑以下三个指令:
ssl_protocols
- 使用这个指令指定您要允许或者禁用的 TLS 或者 SSL 版本。
ssl_cipher_list
- 使用这个指令指定您首选的密码套件或禁用您要禁止的密码套件。
ssl_prefer_server_ciphers
-
取消注释并将此指令设置为
yes
,以确保连接的客户端遵循您指定的密码顺序。
例如,/etc/dovecot/conf.d/10-ssl.conf
中的以下行只允许 TLS 1.1 及之后的版本:
ssl_protocols = !SSLv2 !SSLv3 !TLSv1
其他资源
- 在 RHEL 8 上部署不同类型的服务器
-
config(5)
和ciphers(1)
手册页。 - 安全使用传输层安全性(TLS)和数据报传输层安全性(DTLS)的建议。
- Mozilla SSL 配置生成器。
- SSL 服务器测试 。