2013年09月17日

NginxのSSL設定メモ(obsolute)

このssl_ciphersだとWindows+IEでRSA鍵共有が優先されてしまう問題が有ったのでobsolute

 

理由が記載されていない設定例しか見当たらなかったのでメモしておく。2013/9時点の理解。 Apacheでも名前の読替えで全て同じ設定が可能。

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers AESGCM:SHA384:SHA256:@STRENGTH:RC4:HIGH:!EXP:!LOW:!MD5:!aNULL:!eNULL:!KRB5:!PSK:!SRP;
    ssl_prefer_server_ciphers on;
    ssl_stapling on;
    add_header Strict-Transport-Security max-age=31536000;
ssl_ciphers
  • RC4 > CBC (BEASTの方が重大と考える)なら、上記の通り。
  • CBC > RC4 (RC4の危殆化が重大と考える)なら
      ssl_ciphers HIGH:!MD5:!aNULL:!eNULL:!EXP:!KRB5:!PSK:!SRP;
  • クライアントの構成から、SSLv3とRC4を無効にできるなら、
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!EXP:!KRB5:!PSK:!SRP;

ciphersの記述を細分すると、

AESGCM:SHA384:SHA256:@STRENGTH

TLSv1.2以降で導入された方式をMACでリストアップして、暗号強度順に並べている。これらに対応しているクライアントはTLSv1.2で接続しているはず。デフォルト有効ではないものの、メジャーブラウザは実装済み。 なお、

TLSv1.2:!eNULL

でも同じ結果になるはずだが、1.0.1eより前ではTLSv1.2という一括指定は使えないようだ。

RC4:HIGH:!EXP:!LOW

BEAST未対策かつTLSv1.2非対応の古いブラウザ向けにRC4-128bitを優先する。米国輸出規制対応の弱いRC4は!EXPで排除される。(64bitのRC4が実装された時のために!LOWをいれておく) RC4が無効化されていればそれ以外に128bit以上の暗号を使う。

!MD5

今のところ弱衝突はでていないが、MD5が必須なのはSSLv2以下のブラウザだけなので無効にして構わない。SHA1に非対応のブラウザは流石に無いと考えていい。

!aNULL:!eNULL:!KRB5:!PSK:!SRP

署名なし、暗号化なしは無効。また古い形式と事前共有など。使われることは無いだろうが ssl_prefer_server_ciphers on なので念のため無効にしておく

これらのルールは

    openssl ciphers -v 'ciphersuites'

で利用される順序が確認できる。

ssl_session_cache

トラフィックが少ないのでワーカー毎キャッシュを無効にして、全て共有。

ssl_stapling

OCSP応答をサーバー側にキャッシュする。最初のセッション確立までの遅延を減らせる。nginxの場合、resolverを明示的に設定が必要

Strict-Transport-Security

同じくトラフィックが少ないのでブラウザにSSLの利用を強制する。

ラベル:nginx ssl Beast
posted by ko-zu at 19:45| Comment(0) | TrackBack(0) | サーバー | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック