SecureEdge SSLインスペクション
このドキュメントでは以下の構成の SecureEdgeでSSLインスペクションを実現する手順を記載します。
構成
利用機器:Barracuda SecureEdge T100B
物理構成
論理構成
SSLインスペクションとは
SSL インスペクションとは、SSL によって暗号化されている通信を復号して、セキュリティ検査を行う機能のことです。
SSL インスペクションの仕組み
Barracuda SecureEdgeの SSLインスペクションでは、SSL通信を復号し、セキュリティ検査を行ったうえで、再び暗号化します。また、SSL インスペクションを有効にした状態で SSLサイトへ接続すると、SecureEdge がそのサーバとの SSL セッションを終端し、クライアントへその SSL セッションを中継します。SecureEdge はクライアントへ新たな SSLセッションを確立するために、SSL証明書を用意する必要があります。
SecureEdgeにインストールする証明書:
CA証明書セット(CA証明書+秘密鍵)SecureEdgeは PKCS12 フォーマットのみ対応
クライアントにインストールする証明書:
CA証明書でサインした証明書
クライアント側では CA 証明書が OpenSSLなどで作成された、公的認証局の証明書出ない場合、ブラウザでCA証明書を信頼しないため、SSLインスペクション経由で SSLサイトにアクセスすると次のような警告メッセージが表示されます。詳細をクリックして、「危険を承知で続行」を選択すると Web サイトにアクセスができます。
ただし、上記のように HSTS(Hypertext Strict Transport Security) 設定をしている Web サイトにアクセスした場合は「危険を承知で続行」のボタンは表示されず Web サイトにアクセスすることはできません。HSTS とはサイト運営者がブラウザに対して、SSL で保護された HTTPS でアクセスするように通知する機能です。SSL ストリップ攻撃と呼ばれる中間者攻撃などを阻止するための機能です。
詳細の情報を確認すると、自身(この場合、Barracuda)で発行した証明書になっていることがわかります。
このような警告をブラウザで表示せずに Webサイトへアクセスするには、2 つの方法があります。
パブリックな証明書発行期間から入手した CA 証明書を SecureEdge にインストールをする。(ただし、この方法はコストがかかります。)
各クライアントに手作りの CA 証明書を「信頼されたルート証明機関」 として格納する。
設定手順
SSLインスペクション用の証明書を作成します。
OpenSSLの Windows版を利用してローカルCA局を作成し、その root証明書セットと証明書を使用して SSLインスペクションを実施します。
OpenSSL 設定ファイルの準備などはこちらを参照しました。
参照先:https://nodejs.keicode.com/nodejs/openssl-create-ca.php
秘密鍵とルートCA証明書の作成
ここで作成した ca.key.pem や ca.key.pem が、 ルートCAの秘密鍵とルートCA証明書です。
1: Cドライブ直下に CAというフォルダを作成し、そこで作成作業を実施しています。
cd /d C:\CA
2: 秘密鍵を作成します。
openssl genrsa -aes256 -out root\private\ca.key.pem 4096
3: 証明書を作成します。
openssl req -config root\openssl.cfg -key root\private\ca.key.pem -new -x509 -days 9999 -sha256 -extensions v3_ca -out root\certs\ca.cert.pem
4: SecureEdgeが読み込める PKCS12形式で CA局の証明書と秘密鍵をエクスポートします。
クライアントに CA 証明書をインポート
1: ファイル名を指定して実行に「certlm.msc」と入力して、証明書ストアを開きます。
2:「信頼されたルート証明機関」下の「証明書」を右クリックして「すべてのタスク」→「インポート」を選択します。証明書のインポートウィザードが開始します。「次へ」をクリックします。
3: 先ほどダウンロードした CA証明書を選択して「次へ」をクリックします。
「証明書をすべて次のストアに配置する」を選択し、証明書ストアを「信頼されたルート証明機関」にして、「次へ」をクリックします。
「完了」をクリックして、証明書のインポートは終了です。
4: HTTPSのサイトに再度アクセスする
今度は特に警告なく結果が表示されました。正しく証明書がインポートされていることがわかります。
証明書情報を表示すると、先ほどと同様 Barracudaの証明書であることがわかります。
SecureEdgeでは SSLインスペクションをしないアプリケーションを例外として設定することも設定可能です。