Barracuda CloudGen WAFからLet’s Encryptの無料SSL証明書を取得する

2019年7月17日

はじめに

前回の記事ではAzure上にBarracuda CoudGen WAFをHA構成で導入しましたが、SSLオフロードの設定で利用するSSL証明書は自前のDigi Certのものを利用していました。

【前回の記事】

独自ドメインを取ったり、ネームサーバのレコード編集をしたりは比較的ハードルが低い(V○lue D○mainとか、お名○.comとか)のですが、やはり有償のSSL証明書取得はDV証明書であってもそれなりのお値段がするので、Let’s Encryptを使ったSSL証明書取得を試しました。

Let’s Encryptとは

誤解を恐れずに簡単に説明すると、無料のDV(ドメイン認証)型のSSL証明書です。

有効期限は90日で、期限が来る前に証明書の更新を行う必要があります。

https://letsencrypt.org/

nginxのモジュールがあったりと、SSL証明書取得・更新の手間を軽減するサポートツールが各Webサービス側に用意がされており、Barracuda CloudGen WAFにも証明書管理メニューからLet’s Encryptの証明書取得と自動更新の設定が行えます。

ファームウェアの最新化

まずは問題発生時に切り分け箇所を少なくするために、WAFのファームウェアは最新に上げておきます。

私は10.0.0.010(2019-05-27)で試しましたが、多分9.x系でも大丈夫だとは思います。

httpサービスの有効化とWAFモードの変更

Barracudaのサイトにも前提条件にかかれていますが、以下の条件をクリアしておきます。

  • HTTPサービスを作成し、そのサービスがACTIVEモードになっていること
  • ドメインがTCPポート80でインターネット経由でアクセス可能であること
  • ドメインが上記で作成したHTTPサービスにアクセス可能であること

https://campus.barracuda.com/product/webapplicationfirewall/doc/84313865/generating-a-signed-certificate-using-let-s-encrypt/

要するに http://mydomain/ でサイトが表示できるようにしておくことと、WAFの設定はパススルーモードではなく、しっかりブロックするアクティブモードにしておく必要があります。

「基本設定」→「サービス」から事前に作成したサービスのEditをクリックして、編集画面を開きます。
httpサービスを作成した際のデフォルトではパッシブモードになっているので、こちらをアクティブに変更して保存します。

httpのサービス追加方法の詳細については、以下サイトの「http(TCP/80)によるWAF経由のアクセス」あたりの章を先に確認するといいでしょう。
https://zakki.nya-n.net/?p=387

Let’s Encrypt証明書の取得

「基本設定」→「証明書」画面から、「Let’s Encrypt」をクリックします。

「証明書名」は適当に、「コモンネーム」と「SAN」にはDNSに登録したFQDNを入力します。
「Services」は先に作成したhttpサービスの名前を選択。「国、都道府県、市区町村、組織名」は任意の値を正直に、「Renew Automatically」は自動更新が必要であれば「はい」を選択して、更新タイミングを選択します。
最後に「証明書の作成」をクリックします。

「証明書」をクリックすると画面がリロードされます。
暫く以下の画面の様に実行中のタスクが表示されます。

暫く待つと先に登録した証明書が一覧に追加されました。

証明書の適用と確認

証明書は登録しただけでは有効になりませんので、httpsサービスの証明書を設定します。
私は既に以前のエントリで別の証明書を使ってhttpsサービスの作成を行っていましたので、バインドする証明書を入れ替えるだけです。

具体的な設定は以下サイトの「https(TCP/443)によるWAF経由のアクセス」あたりの章を先に確認するといいでしょう。
https://zakki.nya-n.net/?p=387

ブラウザからの確認

任意のブラウザからhttps://mydomain/にアクセスして、証明書が正しく設定されていることを確認します。

おわりに

WAF導入直後はWAFのモードが「パッシブ」となっているため、ドキュメントをちゃんと読まないとLet’s Encryptからのドメイン認証がうまく通らずに苦戦すると思います。(実は私もそうですw

少しでも本記事が役に立てばいいなと思います。