ファイアウォールなどのアプライアンス機器にhttps(SSL)でWebUIに接続すると、「この Web サイトのセキュリティ証明書には問題があります。」とエラーが表示されます。これは、ファイアウォールが提示するサーバ証明書をブラウザ内のルート証明書で妥当性検証できないために発生しています。
本事象を発生させないために必要な自己署名証明書の作成方法を調べましたのでまとめています。また、UTMやロードバランサに搭載されているSSL可視化機能(SSLインサイト/SSLインスペクション)の際にも自己署名証明書が必要になりますが、同様の方法で作成が可能です。
サーバ証明書の妥当性検証
自己署名証明書の作成方法の前に、サーバ証明書の妥当性検証についてまとめます。
サーバ証明書の役割の1つに、「正規のウェブサイトであることの証明」があります。こちらは、ユーザがウェブサイトに接続してサーバ証明書をダウンロードした際、ブラウザ内にあるルート証明書でサーバ証明書が正規の認証局(Symantecなど)で署名されたことを確認することで、本機能を実現しています。
自己署名証明書とは、このルート証明書を自作してサーバ証明書に(勝手に)署名を行い、サーバ証明書をウェブサイトに、自作のルート証明書をブラウザにインポートすることで、あたかも正規にサーバ証明書の妥当性検証ができているように見せかけることでエラーを回避しています。(つまり、何らセキュリティ的には向上していません。)
自己署名証明書の作成方法
①事前準備
自己署名証明書はLinuxのOpenSSLで作成します。OpenSSLがインストールされていない場合は、以下のコマンドでインストールします。
②ファイアウォールでのcsr作成
証明書の元となるcsrをファイアウォールで作成します。PaloAlto PAの場合には、
から作成が可能です。この際、対象のウェブサイトとcsrのFQDNを合わせる必要があります。
③openssl.cnfの編集
「/etc/pki/tls/openssl.cnf 」にて以下を修正
※openssl.cnfの格納場所が違うケースもあるので、その場合はfindで捜索。
④作業フォルダ作成
以下コマンドで作業フォルダを作成します。
# mkdir -p /etc/ssl/CA/private
# mkdir -p /etc/ssl/CA/crl
# mkdir -p /etc/ssl/CA/newcerts
# mkdir -p /etc/ssl/CA/csr
⑤秘密鍵格納場所の権限指定
秘密鍵が格納される場所にアクセス権限を付与します。
⑥シリアル初期化
証明書発行のシリアル値を格納するファイルを作成し、01を記入しておきます。
⑦証明書データベース初期化
証明書のデータベースとなるindex.txtを空ファイルとして作成します。
⑧秘密鍵作成
CA証明書と対になる秘密鍵を作成します。
⑨CA証明書作成
⑧の秘密鍵をもとにCA証明書を作成し、作業フォルダにコピーします。
# cp -p certs/cacert.pem cacert.pem
⑩サーバ証明書作成
csrにCA証明書で署名を行い、サーバ証明書を作成します。
⑪CA証明書インポート
クライアントのInternetExplorerで[インターネットオプション]→[コンテンツ]→[証明書]を開き、信頼されたルート証明機関のタブで⑨にて作成したCA証明書(pemファイル)のインポートを行います。
⑫サーバ証明書インポート
⑨⑩で作成したCA証明書・サーバ証明書(pemファイル)をファイアウォールにインポートします。
以上にて、作業完了です。