Я новичок в конфигурации OpenSSL и пытаюсь определить, может ли OpenSSL иметь TLSv1 и некоторые небезопасные шифры, отключенные для всей системы в Linux каким-либо образом, используя общесистемную конфигурацию или пользовательскую сборку (и) OpenSSL?
Из того, что я прочитал в Интернете, похоже, что это невозможно сделать на системном уровне, а только на уровне приложения, поскольку такие приложения, как Apache и Nginx, связаны с определенной версией OpenSSL, которая затем настраивается через конфигурация самого приложения.
Таким образом, чтобы отключить TLSv1 в Apache, это будет изменение конфигурации Apache, а для отключения TLSv1 в Nginx это будет изменение конфигурации Nginx.
Мой вопрос: можно ли создать собственную версию OpenSSL, которая отключает TLSv1 и определенные шифры, которые затем устанавливаются в масштабе всей системы и используются Apache и Nginx, а также любые приложения, которым требуется OpenSSL в системе?
Даже если Apache и Nginx будут использовать разные версии OpenSSL, можно ли создать и развернуть в системе две отдельные пользовательские версии OpenSSL, которые затем будут использоваться этими приложениями?
Я просматривал Поваренная книга OpenSSL и OpenSSL вики, но чувствую, что хотел бы получить совет, как действовать дальше.
Мой вопрос: можно ли создать собственную версию 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.
Обратите внимание на последнее примечание на no-tls flag, который указывает, что он влияет только на переговоры.
К сожалению, вы не можете гарантировать, что приложения перестанут использовать небезопасные конфигурации с помощью общесистемного файла конфигурации. OpenSSL (и, возможно, все приложения, которые ссылаются на него) необходимо перекомпилировать, отключив небезопасный протокол и параметры шифрования.
И если у вас заблокирован OpenSSL, какое-то приложение использует GnuTLS, NSS или другую реализацию.
Поэтому, если вы хотите, чтобы ваши приложения использовали разумную конфигурацию TLS, вы должны использовать файлы конфигурации для конкретного приложения.
При этом Redhat кажется поддержка общесистемных файлов конфигурации шифрования в Fedora, который когда-нибудь может оказаться в RHEL.