RHEL6/CentOS/SL6のApacheでTLSv1.2サポートを取得するには?

RHEL6/CentOS/SL6のApacheでTLSv1.2サポートを取得するには?

私のScientific Linux 6(RHEL6再構築)サーバーでは、ApacheはTLSv1.2をサポートしたいと思います。

動作させるいくつかのサポートされている方法はありますか?最小限のカスタム再構築が最適です。これで、SL6リポジトリに提供されているように、open_sslでmod_sslを使用しています。

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

答え1

TLSv1.2 および ECC サポートを追加するために、バンドル 1.0.0 バージョンを交換し、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の必要性を大幅に軽減し、2013年にも永遠に答えとして残るHeartbleedのような欠陥を解決します。次の手順に従わないでください。 1.0.1g以上を実行する必要があります。

今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

次に、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:レザーレザーバージョンが14から15に増加しました

20130831:fc20リビジョンが15から18に増加しました。

20130906:fc20リビジョンが18から19に増加しました。

20140408:1.0.1g以降のすべてのアイテムは私のサイトにアクセスできます。

答え2

TLSv1.2の設定を説明するServerFaultでこのリンクを見つけました。質問と回答 質問は次のとおりです。ApacheのSSL / TLS 1.2とopenssl 1.0.1

次のリンクはTLSv1.2情報をカバーしています。

httpd.confhttpd 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ドキュメントでは、これは次のように翻訳されています。

SSLCipherSuite aRSA:kRSA:AES128-CBC:SHA  

あなたは読むことができますhttpdのSSLCipherSuites、ここ

過去には、次のタイトルのブログ投稿にこれを使用しました。ApacheでSSLv2をロックするTLSv1.1に対してこれを行います。このページのすべてのコンテンツはまだ関連性がある必要があり、CipherSuites +のバージョンを変更するだけですopenssl

答え3

私は最近友人のためにPOODLEの文脈で同じ問題を調査していました。

epelで2013年10月の最新(AORN)httpd24バージョンを使用している場合は、デフォルトでTLSv1.0とTLSv1.1を受け取ります。しかし、ApacheでSSLProtocolを別の合理的な値に設定すると、httpd24が明らかにopensslヘッダー用に構築されているため、これらのプロトコルは失われます。

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

これは、mod_sslが知っているプロトコルが正確に1つに達したときに発生する不幸な問題です。

RedHat "Software Collection"のhttpd24は最近ビルドされており、この問題は発生しません。おそらくopensslの将来のバージョン用にビルドされている可能性があります(または単純なカスタムパッチがあります)。

関連情報