🔒

Cloudflare で mTLS を利用する

2022/09/24に公開1

Cloudflare で mTLS を利用するのがあまりにも簡単だったので書いておきます。

mTLS について

一般的に TLS を利用する場合は「クライアントがサーバーから送られてきた証明書を検証する」という仕組みを利用し、
信頼できる機関が発行した証明書を利用しているかどうかや証明書のドメインが一致しているかどうかなどを確認します。

mTLS (mutual TLS) というのは TLS 利用時に「クライアントから送られた証明書をサーバが検証する」という仕組みです。

つまりサーバーがクライアントがわから送られてくる証明書を確認するというフェーズが挟み込まれます。
この証明書自体は何を使ってもよく、オレオレ証明書でもかまいません。

クライアント側に証明書を設定するという仕組みです。VPN とかを利用したりする方は経験があるかもしれません。

mTLS はめんどくさい

クライアント側に証明書を設定するというのが本当にめんどくさいです。さらにそのクライアントが破棄されたタイミングで revoke しなければなりません。それもめんどくさいです。

ブラウザで利用するにも証明書を設定する必要があります。証明書をクライアント毎に発行するという場合もあるでしょう。

つまり mTLS は凄くめんどくさいです。

なぜ mTLS を使いたいのか

めんどくさい mTLS ですが、メリットが多くあります。

1. 中間者攻撃 MITM が防げるようになります。mTLS はクライアントもサーバー両方チェックするので間に入り込むのがほぼ不可能になります。

  1. ほぼ最強の認証の仕組みとして使える。証明書検証をサーバーが行う前提なのでクライアントが正しい証明書を持っているかどうかというチェックだけで認証が行えます。最高です。

  2. 接続中の負荷は変わらない。mTLS を使ったとしても最初のハンドシェイク時以外は負荷は特に変わりません。HTTP/2 や HTTP/3 であれば繋ぎっぱなしで利用するでしょうからほとんど負荷が変わりません。

  3. アタックに強い。そもそも証明書を送ってこなければ相手にしませんし、証明書の改ざんは基本的に無理なので何をやっても無駄になります。

  4. なりすましに強い。両方で認証する仕組みになるためなりすましをするのがほぼ不可能になります。

凄い簡単にいえば mTLS 使うだけで認証をあまり何も考えなくて良くなります。ただ revoke だけはちゃんとしないとだめです。

Cloduflare で mTLS

Cloudflare では mTLS のためのクライアント証明書を発行するのがとても簡単です。

Cloudflare にドメインが登録済みの前提です。

クライアント証明書

Image from Gyazo

クライアント証明書の作成

ECC で 15 年を選んでいます。別に RSA でも 10 年でもいいです。

Image from Gyazo

クライアント証明書の取得

二度と表示されないので、ちゃんと保存しましょう。

Image from Gyazo

ホストの登録

mTLS を有効にするホストを登録します。ここでは mtls.shiguredo.co.jp を登録しています。

Image from Gyazo

mTLS のルール設定

ファイアーウォールの設定で、mTLS で設定したドメインを登録します。ボタン一つです。

Image from Gyazo

ファイアウォール設定一覧

mTLS の設定が追加されていることを確認します。

Image from Gyazo

設定の確認

mTLS の設定としてホスト名が mtls.shiguredo.co.jp でクライアント証明書を要求していることを確認します。

Image from Gyazo

以下は mTLS で守られた URL です。アクセスしてみてください。

https://mtls.shiguredo.co.jp/

Cloudflare Workers で mTLS

Cloudflare Workers のカスタムドメインで指定したドメインを指定して mTLS ルールを作るだけで終わりです。

時雨堂では Fluent Bit からの Out HTTP の送り先であるエンドポイントを mTLS にすることで変なアクセスを受け付けないようにしています。
さらに Cloudflare の IP 制限も mTLS とセットで行うことで、より強固にすることが可能です。

Fluent Bit の mTLS 設定

宣伝

TLS について学びたい場合は以下の本をオススメします。

プロフェッショナルSSL/TLS – 技術書出版と販売のラムダノート

資料

Discussion

Hidden comment