この記事は「(全部俺)何でも Advent Calendar 2013」の8日目です。(2日遅れ
このブログの管理画面用にStartSSLで取得したサーバー証明書を使っていますが、環境によっては中間証明書がインストールされていないために警告画面が表示されてしまいます。
ちょうどサーバー証明書の期限が近づいていたこともあり、更新ついでに証明書を結合してみました。
なお、Apache+mod_sslであればSSLCertificateChainFIleディレクティブで中間証明書を設定できます。
4階層以上の証明ツリーを持つ場合やnginx等の中間証明書を設定できない場合にこの手順を用います。
参考:
nginx – 無料のSSL証明書StartSSLを活用する – Qiita [キータ]
(ELB に)中間証明書とクロスルート証明書の連結する順番に注意 – tkuchikiの日記
Android端末だとどうしても証明書の追加が面倒ですが、この方法を使えばルート証明書がインストールされているなら警告が表示されません。
まず認証局から中間証明書、クロスルート証明書など結合する証明書の公開鍵を取得します。
これらのファイルは「BEGIN CERTIFICATE」から始まり「END CERTIFICATE」で終わる見慣れた形式のはずです。ここでは中間証明書をintermediate.pem, クロスルート証明書をxroot.pemと保存したと見なします。
次に、サーバー証明書と中間証明書等を結合します。
ここで注意するのは、ファイルの先頭から見たときに証明の階層が深い方から順番に結合する点です。
認証の仕組み上、「サーバー証明書->中間証明書->(クロスルート証明書->)ルート証明書」の順番で検証する必要があります。この順番に格納されていないと、エラーとなる可能性があるので注意してください。
Unix環境であれば、コマンドで一発です。
shell> cat server.pem intermediate.pem xroot.pem >> certificate.pem |
あとは結合したcertificate.pemを公開鍵として設定するだけです。
nginxなら ssl_certificate にcertificate.pemを設定すればそのまま利用できます。
ピンバック: 【実験】Nginxによるリバースプロキシの設定と爆速WordPress | IT技術情報局