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のみをサポートしていることです。
バンドルされた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以降のものについては、私のウェブサイトにアクセスしてください。
私は最近、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に対してビルドされている(または簡単なカスタムパッチがある)
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
を変更することだけです。