web-dev-qa-db-ja.com

RHEL6 / CentOS / SL6上のApacheでTLSv1.2サポートを取得するにはどうすればよいですか?

Scientific Linux 6(RHEL6再構築)サーバーのApacheでTLSv1.2をサポートしたいのですが。

これを機能させるための半サポートされた経路はありますか?できれば最小限のカスタム再構築で。現在、SL6リポジトリで提供されているように、mod_sslとopen_sslを使用しています。

編集: TLSv1.2のサポートが利用可能になると、Apacheの設定は十分に文書化され、それほど難しくありません。問題は、RHEL6にOpenSSL 1.0.0が同梱されており、1.0または1.1までのTLSのみをサポートしていることです。

7

バンドルされた1.0.0バージョンを置き換えてTLSv1.2およびECCサポートを追加することにより、RHEL6およびバリアントをサポートするためにFedora CoreからOpenSSL 1.0.1 RPMをバックポートすることに関するクイックガイドを書きました。 2013年9月にCentOS 6.4に対してビルドおよびテストされました。

CentOS 6のOpenSSL 1.0.1 RPMのガイド

注意:ここに、OpenSSLとOpenSSHのコピーを最新の状態に保ちます。 CentOS 6.5の改善によりTLS1.2の需要が大幅に軽減され、Heartbleedなどの欠陥が解決されましたが、この回答は2013年に永久に行き詰まります。以下の手順をそのまま実行しないでください。 。

今githubで: github/ptudor/centos6-openssl

このガイドで参照するパッチを用意しました: openssl-spec-patricktudor-latest.diff

まず、ビルド環境を準備します。 (EPELをインストールしている場合は、mockを使用してください。ここではシンプルにしてください...)

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

次に、OpenSSL用のFedora Core 20 SRPMと完全な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

すべてうまくいけばうまくいくので、新しいRPMをインストールしましょう:

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:Rawhideリビジョンが14から15に引き上げられました。

20130831:fc20リビジョンが15から18に引き上げられました。

20130906:fc20リビジョンが18から19に引き上げられました。

20140408:1.0.1g以降のものについては、私のウェブサイトにアクセスしてください。

10
Patrick Tudor

私は最近、POODLEのコンテキストで、同じ問題を友人のために調査していました。

Epelで2013年10月からの最新の(AORN)httpd24ビルドを使用する場合、デフォルトでTLSv1.0およびTLSv1.1を取得します。ただし、ApacheでSSLProtocolを適切な値に設定するとすぐに、opensslヘッダーhttpd24が組み込まれているように見えるため、これらのプロトコルは失われます。

実際には、これは、SSlv2またはSSlv3を明示的に無効にしようとすると、TLSv11およびTLSv12を暗黙的に無効にすることを意味します。

Mod_sslが知っているプロトコルを1つだけドロップすると、これは残念ながらmod_sslの癖です。

RedHatの「ソフトウェアコレクション」のhttpd24は、最近作成されたものであり、この問題の影響を受けません。おそらく、後のopensslに対してビルドされている(または簡単なカスタムパッチがある)

0
covener

TLSv1.2のセットアップをカバーするServerFaultにこのリンクを見つけました。 Q&Aのタイトルは openssl 1.0.1を使用するApache上のSSL/TLS 1.2 です。

これらのリンクはTLSv1.2情報をカバーしています:

以下をhttpd.confに含めると、httpd v2.2以降およびopenssl 1.0.1c以降を使用していると想定して、TLSv1.2が有効になります。

SSLProtocol all -SSLv2

それでもCipherSuiteをセットアップする必要があります。これは、混乱する可能性がある場所です。上記のドキュメントによると、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およびMac SHAである必要があることを示しています。

Httpd mod_ssl docsから、これは次のように変換されます:

SSLCipherSuite aRSA:kRSA:AES128-CBC:SHA  

SSLCipherSuites in httpd、here について読むことができます。

過去に、ブログの投稿 Locking Down SSLv2 in Apache を使用してTLSv1.1でこれを実行しました。そのページのすべてが依然として関連しているはずです。必要なのは、CipherSuites +バージョンopensslを変更することだけです。

0
slm