Software

IPA「SSL/TLS 暗号設定 ガイドライン」を基にしたウェブサーバーの設定例

投稿日:2015-06-04 更新日:

SSL/TLS暗号設定ガイドライン~安全なウェブサイトのために(暗号設定対策編)~:IPA 独立行政法人 情報処理推進機構 を参考にして、実際にウェブサーバーのSSL設定をどう書けばよいのか?をメモする。

(注意)元資料ではかなり細かく説明されています。ここではかなり簡略化しているので参考程度に読んで下さい。

設定するために決めておく主な項目

この資料を元にウェブサーバーを設定する場合、次の選択肢をそれぞれ決定してそれを基に設定していく(ものすごく簡略化している)。

  1. 次のどれを採用するか?
    • 高セキュリティ型
    • 推奨セキュリティ型
      • 普通はこれでよさそう。
    • セキュリティ例外型
  2. 暗号スイートに、ECDH / ECDHE(楕円曲線暗号を使った暗号アルゴリズム。鍵交換で使う)を使うかどうか?(使わない場合は「基本」の方を使う)
    • ECDH / ECDHE はパテントリスクがあるらしい。
    • 暗号スイートは、まずは「推奨セキュリティ型の設定例(楕円曲線暗号あり)」を参考にして設定しておき、SSL Server Test (Powered by Qualys SSL Labs) でテストしてみて、もし問題がありそうであれば、「推奨セキュリティ型の設定例(基本)」に切り替えればよさそう。
  3. HSTS(HTTP Strict Transport Security) を設定するかどうか?
    • 一度有効にしてから無効にしたくなった場合、クライアント側の設定をコントロールするのが難しい。
    • ブラウザ自体の HSTS関連設定も何かイマイチだった(一度、HSTSがセットされたウェブサイトに対して、後からそれを取り消す機能がちゃんと動かないことがあった)。
    • これを設定していると、そのウェブサイトに対して OWASP ZAP のようなツールで SSL通信をプロキシできない。
  4. OCSP Stapling を設定するかどうか?
    • それ程面倒でもなさそうなので設定しておけばよさそう。
  5. Public Key Pinning を設定するかどうか?
    • 証明書更新時などにトラブルの元になる覚悟が必要
    • ちゃんとコントロールできる体制があるのであれば設定すればよい。

推奨セキュリティ型を採用した場合の設定例(Apache)

ssl.conf

(中略)
# OCSP Stapling の設定をする場合は、ここに追記する。
## キャッシュサイズ 128,000 バイト
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

<VirtualHost *:443>
    (中略)
    SSLEngine on

    # 証明書と鍵の設定
    SSLCertificateFile /etc/ssl/chain.crt
    SSLCertificateKeyFile /etc/ssl/server.key
    SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
    SSLCACertificateFile /etc/ssl/certs/ca.pem

    # 暗号スイート設定
    ## 推奨セキュリティ型の設定例(楕円曲線暗号あり)
    SSLCipherSuite "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES1 28-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES 128-SHA:AES128-GCM-SHA256:AES128-SHA256:CAMELLIA128-SHA:AES128-SHA:ECDH-E CDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-G CM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RS A-AES256-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:AES256-GCM-S HA384:AES256-SHA256:CAMELLIA256-SHA:AES256-SHA:ECDH-ECDSA-AES256-GCM-SH A384:ECDH-RSA-AES256-GCM-SHA384"

    # プロトコルバージョン設定
    SSLProtocol all -SSLv2 -SSLv3

    # 暗号スイート順序サーバ優先設定
    SSLHonorCipherOrder on

    # OCSP Stapling の設定をする場合には、こちらにも記述が必要
    SSLUseStapling on

    (中略)

(中略)

推奨セキュリティ型を採用した場合の設定例(nginx)

server {
    listen 443 ssl;
    (中略)
   
    #証明書と鍵の設定
    ssl_certificate /etc/ssl/chain.crt;
    ssl_certificate_key /etc/ssl/server.key;

    # 暗号スイート設定
    ## 推奨セキュリティ型の設定例(楕円曲線暗号あり)
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES1 28-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES 128-SHA:AES128-GCM-SHA256:AES128-SHA256:CAMELLIA128-SHA:AES128-SHA:ECDH-E CDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-G CM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RS A-AES256-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:AES256-GCM-S HA384:AES256-SHA256:CAMELLIA256-SHA:AES256-SHA:ECDH-ECDSA-AES256-GCM-SH A384:ECDH-RSA-AES256-GCM-SHA384";

    #プロトコルバージョン設定。Appendix B.2.3 も参照のこと
    ## nginx ver. 1.1.13/1.0.12 かつ OpenSSL ver. 1.0.1 以上 の場合はこちら
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ## そうでない場合はこちら
    #ssl_protocols TLSv1;

    # 暗号スイート順序サーバ優先設定
    ssl_prefer_server_ciphers on;

    # OCSP Stapling を使う場合の設定
    ## SSLが設定された複数のVirtual Hostがある場合は、全てOCSPを有効にしておく必要がある。
    ssl_stapling on;
    ssl_stapling_verify on;
    # ssl_trusted_certificate:
    #    - ルートCA、中間証明書(必要なら) が pem形式で含まれている必要がある
    #    - なので、ssl_certificate で指定したファイルと同じでもよいこともありえる
    ssl_trusted_certificate /etc/ssl/ca-certs.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 10s;

    (中略)
}

設定の確認

Pocket

-Software
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*

おすすめ記事&スポンサーリンク

関連記事

no image

テキストをHTMLに変換する

同ツールのコマンドを使ってもいいけど、以下のサイト上で直接やるのが簡単(機密情報でなければ) txt2html – Text to HTML converter http://txt2ht …

OWASP ZAPのXSS(Cross-site scripting)診断は何をしているのか?

OWASP ZAPのActive Scanで行っている脆弱性診断にはいろいろな項目があります。ここでは、その中の1つである「XSS(Cross Site Scripting)」の診断が何をしているのか …

Apache Struts2 の脆弱性対策について注意喚起されていました

IPAから「Apache Struts2 の脆弱性対策について(CVE-2014-0094)(S2-020)」というページで Apache Struts2 の更新を呼びかけていました。 Apache …

OWASP BWA に bWAPP を導入する

bWAPP は、いわゆる「やられWebアプリケーション」の1つです。以前から何度か紹介しているOWASP BWAにはデフォルトで入っていないのですが、ソースコードの変更を見ると、導入しようとしている様 …

OWASP BWAを使って気楽にModSecurityを試す方法

OWASP BWAにはModSecurityが最初から導入されています。簡単に有効/無効の切り替えができるので、ModSecurityがどんな動きをするのかちょっと見てみる場合に便利です。 OWASP …


lathe