Openssl暗号スイートリストを使用するアプリでCBCモード暗号スイートを無効にする簡単なブラックリストスタイルの方法はありますか?私は!RC4
のスタイルで何かを期待していますが、!CBC
は効果がなく、TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
などのスイートを許可します。
私がこれまでに見つけた唯一の解決策は、非CBC暗号のみを含むはるかに詳細なホワイトリストを使用することです。より簡単な代替手段はありますか?
ドキュメント(man ciphers) に記載されている暗号文字列のリストによると、すべてのCBC暗号を説明する文字列はありません。これは、単純な!CBC
または同様のものを使用して、これらすべて(およびこれらのみ)を無効にする簡単な方法がないことを意味します。
!SHA1:!SHA256:!SHA384
を使用して、すべてのCBCモード暗号を無効にすることができます。 CBC以外の誤検知もいくつか無効になります(RC4
、NULL
)が、とにかく無効にすることもできます。
GCM
およびCHACHA20
暗号の名前にはSHA*
が含まれていますが、独自のMACアルゴリズムを使用しているため無効化されていません。名前のSHA*
は MACではなくPRF
過去数日間、ssllabの完全なリストを取得するためにかなりの時間を費やしました。これのおかげで、これが機能します:
SSLCipherSuite ALL:!RSA:!CAMELLIA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SHA1:!SHA256:!SHA384
これを直接行う方法はありませんが、少しスクリプトを書くことができます。
最初の暗号スイート文字列が!3DES:HIGH
であるとしましょう。 (おそらく、最初はより優れた暗号スイート文字列が必要ですが、それは良い出発点であり、この答えをあまり乱雑にしないでしょう。)
今、これを行います:
$ openssl ciphers '!3DES:HIGH' \
| sed -e 's/:/\n/g' \
| grep -v GCM \
| sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/:!/g' -e 's/^/!/'
行ごとの説明:
:
で区切られたリストを1行に1つの暗号スイートに分割するGCM
を言わないものはすべて削除します:!
に置き換え、最初に!
を追加します次に、この出力を取得して、暗号スイート文字列の前に配置します。最初の暗号スイート文字列が変更されたとき、または新しい暗号がOpenSSLまたはそのHIGH
のデフォルトリストに追加された場合に、後でこのプロセスを再実行したい場合があるため、オリジナルを破棄しないでください。