Как я могу получить поддержку TLSv1.2 в Apache на RHEL6/CentOS/SL6?

Вот что-то, что запустит Ваши программы параллельно:

#!/bin/bash

count=$1
command=$2
shift 2

for ((i=0;i<count;i++)); do
  $command "$@" &
done
wait
echo done

Инструкция по ожиданию должна предотвратить зомби для разоблачения. Если для Ваших программ не нужен tty, можно заменить цикл:

for ((i=0;i<count;i++)); do
  nohup $command "$@" </dev/null >/dev/null 2>&1 &
done

Тем путем процессы будут отсоединены от Вашей оболочки.

7
13.05.2016, 09:33
3 ответа

Я записал краткое руководство по при бэкпортировании OpenSSL 1.0.1 об/мин от Ядра Fedora для поддержки RHEL6 и вариантов путем замены связанных 1.0.0 версий для добавления поддержки ECC и TLSv1.2. Созданный и протестированный против CentOS 6.4 в сентябре 2013:

Руководство по OpenSSL 1.0.1 об/мин для CentOS 6

Пожалуйста, примите во внимание: Это - место, где я сохраняю свою собственную копию OpenSSL и OpenSSH актуальной. Улучшения CentOS 6.5 в основном смягчили спрос на TLS1.2, и дефекты как Heartbleed обращены там, в то время как этот ответ навсегда застрянет в 2013. Не выполняйте шаги ниже verbatim, обязательно, чтобы Вы выполнили 1.0.1 г или более новый.

Теперь с GitHub: github/ptudor/centos6-openssl

Я сделал патч доступным, на который я сошлюсь в этом руководстве: openssl-spec-patricktudor-latest.diff

Во-первых, подготовьте свою среду сборки. (При установке EPEL используйте насмешку. Хранение его простой здесь...)

yum -y groupinstall "Development tools" 
yum -y install rpm-build zlib-devel krb5-devel
mkdir -p $HOME/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo "%_topdir $HOME/redhat/" > ~/.rpmmacros

Затем, захватите Ядро Fedora 20 SRPM для OpenSSL и полного источника OpenSSL.

rpm -Uvh http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/source/SRPMS/o/openssl-1.0.1e-42.fc21.src.rpm
cd ~/redhat/SOURCES/
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.sha1
openssl dgst -sha1 openssl-1.0.1g.tar.gz ; cat openssl-1.0.1g.tar.gz.sha1

Теперь примените старый secure_getenv синтаксис и примените патч:

cd ~/redhat/SOURCES/
sed -i -e "s/secure_getenv/__secure_getenv/g" openssl-1.0.1e-env-zlib.patch
cd ~/redhat/SPECS/
wget http://www.ptudor.net/linux/openssl/resources/openssl-spec-patricktudor-fc20-19.diff
patch -p1 < openssl-spec-patricktudor-latest.diff

Выполните сборку:

time rpmbuild -ba openssl.spec

Все подходило, надо надеяться, поэтому давайте установим новый RPMs:

cd ~/redhat/RPMS/x86_64/
sudo rpm -Fvh openssl-1.0.1g-*.rpm openssl-libs-1.0.1g-*.rpm openssl-devel-1.0.1g-*.rpm

Удостоверьтесь, что это на самом деле работало:

openssl ciphers -v 'TLSv1.2' | head -4

Ссылка выше в моем веб-сайте имеет больше деталей, но это должно быть хорошей начальной точкой.

Спасибо, наслаждаться.

20130819: Сделанный из сыромятной кожи пересмотр ударен от 14 до 15.

20130831: пересмотр fc20 ударен от 15 до 18.

20130906: пересмотр fc20 ударен от 18 до 19.

20140408: просто перейдите к моему веб-сайту для чего-либо после 1.0.1 г.

10
27.01.2020, 20:17
  • 1
    Спасибо. Я полунадеялся, что будет (полуофициальный) репозиторий с бэкпортом, на который кто-то указал бы на меня, но кажется, что никакая такая вещь не существует. В этом случае этот подход походит на довольно жизнеспособный второй выбор. –  Michael Ekstrand 12.08.2013, 20:08
  • 2
    другим, необходимо восстановить большинство программ, созданных против openssl после того, как Вы замените/обновите openssl как это. Например, nginx статически связан против некоторых библиотек и не будет работать как ожидалось, пока Вы не восстанавливаете его. –  ck_ 08.09.2013, 11:49

Я нашел эту ссылку на ServerFault, который покрывает установку TLSv1.2. Вопросы и ответы названы: SSL/TLS 1.2 на Apache с openssl 1.0.1.

Эти ссылки касаются информации TLSv1.2:

Включая следующее в Вашем httpd.conf должен включить TLSv1.2, принимающий Вас, имеют httpd v2.2 или выше и openssl 1.0.1c или выше.

SSLProtocol all -SSLv2

Все еще необходимо установить CipherSuites. Это - то, где это может стать сбивающим с толку. Согласно документам выше, единственный обязательный набор шифров для TLS 1.2 TLS_RSA_WITH_AES_128_CBC_SHA:

Appendix C. Cipher Suite Definitions
Cipher Suite                            Key        Cipher         Mac
                                        Exchange
TLS_RSA_WITH_AES_128_CBC_SHA            RSA          AES_128_CBC  SHA

Это говорит, что сервер должен предоставить сертификат RSA для ключевого обмена, и что шифр должен быть AES_128_CBC и SHA Mac.

От httpd mod_ssl документы, это переводит в:

SSLCipherSuite aRSA:kRSA:AES128-CBC:SHA  

Можно читать о SSLCipherSuites в httpd, здесь.

В прошлом я использовал свое названное сообщение в блоге: Блокировка Вниз SSLv2 в Apache, чтобы сделать это для TLSv1.1. Все на той странице должно все еще быть релевантным, все, что необходимо будет сделать, изменить CipherSuites + версии openssl.

0
27.01.2020, 20:17
  • 1
    С OpenSSL 1.0.1 или позже, это легко. Проблема состоит в том, что RHEL6/CentOS/SL6 не поставлется с достаточно недавним OpenSSL. –  Michael Ekstrand 12.08.2013, 20:09
  • 2
    @MichaelEkstrand - почему downvote? –  slm♦ 12.08.2013, 20:27
  • 3
    @sim, поскольку Ваш ответ, в то время как хороший, отвечает на другой вопрос. Проблемой не является конфигурация Apache; это получает его работающий над RHEL6, который поставляет OpenSSL 1.0.0. –  Michael Ekstrand 13.08.2013, 20:33

Я недавно расследовал эту же проблему для друга, в контексте пуделя.

Если вы используете последние (AORN) HTTPD24 сборки с октября 2013 года на EPEL, вы получите TLSV1.0 и TLSV1.1 по умолчанию. Однако, как только вы устанавливаете SSLProtocol в Apache для чего-либо еще разумного, вы потеряете эти протоколы из-за заголовков OpenSSL HTTPD24, по-видимому, было построено.

На практике это означает, что если вы попытаетесь отключить SSLV2 или SSLV3 явно, вы неявно отключите TLSV11 TLSV12.

Это несчастный quirk из mod_ssl, когда вы падаете до 1 протокола, о котором он знает.

HTTPD24 в Redhat «Коллекции программного обеспечения» создан совсем недавно и не страдает от этой проблемы, она предположительно построена против более позднего OpenSSL (или имеет тривиальный пользовательский патч)

0
27.01.2020, 20:17

Теги

Похожие вопросы