TLSプロキシとHTTPサービス

ニュースソース:OpenStack Documentation

以下は 2017年3月7日に公開されたTLS proxies and HTTP services を要約したものです。


OpenStack エンドポイントは、HTTPサービスとして、パブリックネットワークのエンドユーザや管理ネットワーク上のサービスにAPIを提供します。
内部接続、外部接続にかかわらずすべての通信をTLS上で行うようにしてください。API サービスはTLSプロキシの内側で展開するようにしてください。

Apache httpdでのTLSプロキシのTLS設定例を紹介します

注:原文では Apache httpd のほか、オープンソースソフトウェア Pound、Stud、Nginx の設定例も紹介されています。

以下を記述するデフォルトの設定ファイルは「/etc/apache2/apache2.conf —- Ubuntu」、「/etc/httpd/conf/httpd.conf —- RHEL と CentOS」、「/etc/apache2/httpd.conf —- openSUSE と SUSE Linux Enterprise」です。

<VirtualHost [ip address]:80>
ServerName [site FQDN]
RedirectPermanent / https://[site FQDN]/
</VirtualHost>
<VirtualHost [ip address]:443>
ServerName [site FQDN]
SSLEngine On
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2,
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!EXP:!LOW:!MEDIUM
SSLCertificateFile /path/[site FQDN].crt
SSLCACertificateFile /path/[site FQDN].crt
SSLCertificateKeyFile /path/[site FQDN].key
WSGIScriptAlias / [WSGI script location]
WSGIDaemonProcess horizon user=[user] group=[group] processes=3 threads=10
Alias /static [static files location]
<Directory [WSGI dir]>
# For http server 2.2 and earlier:
Order allow,deny
Allow from all

# Or, in Apache http server 2.4 and later:
# Require all granted
</Directory>
</VirtualHost>

SSLCipherSuiteで利用する暗号を指定しています
OpenStack が推奨する Cipher の設定について説明します。
推奨は

“HIGH:!RC4:!MD5:!aNULL:!eNULL:!EXP:!LOW:!MEDIUM”

もしくは、

“kEECDH:kEDH:kRSA:HIGH:!RC4:!MD5:!aNULL:!eNULL:!EXP:!LOW:!MEDIUM”

です。

上記の推奨指定の意味は以下です。
(Cipher文字列の表記方法では、”:”は区切り文字で、”!”は直後の要素の否定を意味します。要素の順序は、優先度を示します。最初の小文字k、a等はそれぞれKey Exchange Algorithm、Authentication Algorithmを意味します。)

★kEECDH:kEDH
楕円曲線ディフィー・ヘルマン鍵交換(略称:EECDH、ECDHE)を最優先で利用、利用できない場合はディフィー・ヘルマン鍵交換(略称:EDH、DHE)を利用するという指定です。
どちらもPFS(前方秘匿性)を提供します。

★kRSA
認証に RSA 鍵交換を使用できます。

★HIGH
ネゴシエーションフェーズでは、鍵長128ビット以上の高いセキュリティ暗号を選択します。

★!RC4
TLS V3 の文脈で欠陥があるため、RC4は使用不可とします。

★!MD5
衝突耐性がないMD5は使用不可とします。

★!aNULL:!eNULL
認証とエンコーディングで平文を禁止します。

★!EXP
エクスポート暗号アルゴリズムを使用不可とします。

★!LOW:!MEDIUM
ブルートフォース攻撃(2-DES など)に対する脆弱性のため、低(鍵長56、64 ビット)および中位(鍵長128 ビット)暗号を使用不可とします。
128ビット以上の安全な暗号鍵を持つトリプルDEAもしくはトリプルDES、米国度暗号標準AESは許可されます。

SSLProtocol で利用するプロトコルを指定しています
OpenStack が推奨する Protocol の設定について説明します。
推奨は

+TLSv1 +TLSv1.1 +TLSv1.2

です。
SSLv2 / v3を無効にし、TLSを有効にすることを推奨しています。