OpenSSL - 全系统禁用 TLSv1 和某些不安全的密码?

OpenSSL - 全系统禁用 TLSv1 和某些不安全的密码?

我是 OpenSSL 配置的新手,正在尝试确定 OpenSSL 是否可以使用系统范围的配置或自定义版本的 OpenSSL 在 Linux 上以任何方式在系统范围内禁用 TLSv1 和某些不安全密码?

从我在网上读到的内容来看,这听起来不能在系统级别完成,而只能在应用程序级别完成,因为像 Apache 和 Nginx 这样的应用程序与特定版本的 OpenSSL 相链接,然后通过应用程序本身的配置进行配置。

因此,要在 Apache 中禁用 TLSv1,这将是 Apache 配置更改,而要在 Nginx 中禁用 TLSv1,这将是 Nginx 配置更改。

我的问题是:是否可以构建一个自定义版本的 OpenSSL,禁用 TLSv1 和特定密码,然后在整个系统范围内安装并由 Apache 使用Nginx,以及系统上任何需要 OpenSSL 的应用程序?

即使 Apache 和 Nginx 使用不同版本的 OpenSSL,是否可以在系统上构建和部署 2 个独立的自定义版本的 OpenSSL,然后供这些应用程序使用?

我一直在回顾OpenSSL 手册OpenSSL 维基,但我觉得我想得到一些关于如何进行的建议。

答案1

我的问题是:是否可以构建一个自定义版本的 OpenSSL,禁用 TLSv1 和特定密码,然后在整个系统范围内安装该版本并由 Apache 和 Ngnix 以及系统上需要 OpenSSL 的任何应用程序使用?

如果我理解你的问题没有错,你希望在编译时禁用 TLSv1,这样 openssl 就不会支持该协议。如果这就是你想要的,有两个标志适用,这是官方描述

no-<prot>

Don't build support for negotiating the specified SSL/TLS
protocol (one of ssl, ssl3, tls, tls1, tls1_1, tls1_2,
tls1_3, dtls, dtls1 or dtls1_2). If "no-tls" is selected then
all of tls1, tls1_1, tls1_2 and tls1_3 are disabled.
Similarly "no-dtls" will disable dtls1 and dtls1_2. The
"no-ssl" option is synonymous with "no-ssl3". Note this only
affects version negotiation. OpenSSL will still provide the
methods for applications to explicitly select the individual
protocol versions.


no-<prot>-method

As for no-<prot> but in addition do not build the methods for
applications to explicitly select individual protocol
versions. Note that there is no "no-tls1_3-method" option
because there is no application method for TLSv1.3. Using
individual protocol methods directly is deprecated.
Applications should use TLS_method() instead.

你应该注意无 TLS标志,表明它只影响协商。

答案2

遗憾的是,您无法保证应用程序停止使用系统范围配置文件的不安全配置。OpenSSL(以及可能链接到它的所有应用程序)需要在禁用不安全协议和密码选项的情况下重新编译。

如果您锁定了 OpenSSL,某些应用程序会使用 GnuTLS、NSS 或其他实现。

因此,如果您想确保您的应用程序使用合理的 TLS 配置,您必须使用特定于应用程序的配置文件。

话虽如此,Redhat 似乎支持系统范围的加密配置文件在 Fedora 中,有一天可能会出现在 RHEL 中。

相关内容