先日の「PHPki で簡単証明書運用 (3) 【署名されたサーバ証明書を作る】」の続きです.
今回はタイトルのとおり,証明書の管理について纏めます.
どんなものでもそうですが,管理が一番大事です.ましてや証明書ですからより慎重に行いましょう.
管理画面へアクセス
証明書の作成と同様,Apacheの Alias で設定した URL に /ca をつけてブラウザでアクセスしてください.この画面は以前もアクセスしていると思いますので,認証を通過しログイントップより解説します.
こんな感じのログイントップ画面が表示されれば管理画面アクセスは完了です.
証明書の管理
管理画面メニューの「Manage Certificates」をクリックすると,証明書の管理を行うことができます.
証明書管理画面は次の画面となります.
右側に4つのアイコンが用意されており、それぞれ次の作業で使用します.
- 虫眼鏡
選択した証明書の詳細内容を表示する - ダウンロード
選択した証明書を証明書形式を指定してダウンロードする - 無効化・失効
選択した証明書を失効させ,証明書失効リストに失効情報を記載する - 更新
選択した証明書の有効期限を更新する
証明書の詳細内容を表示する
「虫眼鏡アイコン」をクリックすると、次のように詳細情報を表示できます.
管理画面のトップで表示されるサマリはあまり多くの情報が載っていませんので,証明書の失効や更新を行う前にここで詳細情報を確認しましょう.
主な確認ポイントは次のとおりになるかと思います.
- Serial Number
この画面上では「1048578 (0x100002)」が該当します.通常は意識することはありませんが,失効した場合のCRL(証明書失効リスト)は失効した証明書のシリアル番号で管理されますので,失効させたい場合は意識した方が良いでしょう.
- Issuer
PHPki で管理している以上,PHPki の Root CA が載りますので,これも通常意識する必要はありませんが,きちんと PHPki の Root CA で署名されていることを確認しておきましょう.
- Certificate purposes
証明書の種類がここでわかります.SSLサーバ証明書の場合は「SSL Server」と「Netscape SSL Server」が「Yes」になります.
証明書を多数管理すると,場合によっては同じホスト名で複数の証明書を作成することになります.その場合,失効,更新を行う際に間違って意図しない証明書を操作してしまう可能性が出てきますので,実施しようとしている証明書なのか,必ず確認しましょう.
参考までに,Certificate purposes はこのような形でリストされています.
SSL client : No SSL client CA : No SSL server : Yes SSL server CA : No Netscape SSL server : Yes Netscape SSL server CA : No S/MIME signing : No S/MIME signing CA : No S/MIME encryption : No S/MIME encryption CA : No CRL signing : No CRL signing CA : No Any Purpose : Yes Any Purpose CA : Yes OCSP helper : Yes OCSP helper CA : No
証明書のダウンロード
「ダウンロード」アイコンをクリックすると,このような画面に移動します.
証明書作成時に PEM 形式でダウンロードすることが出来ましたが,ダウンロードを忘れた場合や他の形式でダウンロードしたい場合,ここから実施します.ダウンロード出来る証明書タイプは次のとおりです.
- PKCS#12 Bundle
PKCS#12 は IIS や Java の証明書として利用される形式で,秘密鍵と証明書を1つのファイルに格納する形式です.Apache では扱えません.Apache で扱うには PKCS#12 を PEM に変換する必要がありますので,最初から PEM で取得したほうがはやいです.
- PEM Certificate
PEM 形式の証明書です.ダウンロードするファイルには証明書のみが含まれます.
- PEM Key
PEM 形式の秘密鍵 (Private Key) です.ダウンロードするファイルには秘密鍵のみが含まれます.
- PEM Bundle
PEM 形式の秘密鍵と証明書です.ダウンロードするファイルには秘密鍵,証明書の順番で含まれます.
- PEM Bundle w/Root
PEM 形式の秘密鍵と証明書,および CA 証明書が含まれます.ダウンロードするファイルには秘密鍵,証明書,CA 証明書の順番で含まれます.
PKCS#12 は形式として秘密鍵と証明書がセットになっていますので悩む必要はないとおもいますが,PEM 形式は無駄に複数の方法があります.こちらは利用形態に合わせてダウンロードすることになります.
一番手っ取り早いのは「PEM Bundle w/Root」でダウンロードすることです.秘密鍵と証明書を分けたい.という場合は必要に応じて,後でファイルを分割することで対応が出来ますので,都度取得や配布の手間がありません.
また,運用として秘密鍵と証明書を明示的に分けて依頼者に渡したい.というような場合は「PEM Certificate」と「PEM Key」のそれぞれをダウンロードして提供する.という形になります.
最終的にはどのような運用を行うのか.を検討したうえでダウンロード方法を決定して頂ければ問題はないでしょう.
証明書の失効
「失効」アイコンをクリックすると,このような画面が表示されます.
単純明快で「Yes」もしくは「Cancel」しかありません.当然「Yes」をクリックすると失効してしまいます.
しかし,理解しておく必要がある点として,失効したからといってもその失効した証明書が有効なのか無効なのかをリアルタイムにクライアントは判断できません.
CRL(証明書失効リスト) をクライアントに配布するか,各自取得してもらうか.などのアクションを取って明示的にCRLを更新するまでは,有効なものとして扱われます.
従って,どのようにCRLの更新を行うのか.の運用方法はあらかじめ検討しておく必要があります.
とは言え,後述の「証明書の更新」に詳細を書きますがリアルタイムで CRL の更新・配布する仕組みを作ってしまうと PHPki の場合は運用が破たんしてしまいます…
証明書の更新
「更新」アイコンをクリックすると,このような画面が表示されます.
「Certificate Password」に証明書作成時のパスワード(CA 証明書ではなく,更新する証明書のパスワード)を入力,「Certificate Life」で更新する有効期間を選択し「Submit Request」ボタンをクリックすることで期限が更新された証明書が作成されます.
注意点として,新しい証明書が作成された段階で既存の証明書は失効されてしまいます.従ってCRL(証明書失効リスト)をどのように配布するのか.をあらかじめ検討しておく必要があります.
また,合わせて注意しなければならない点があります.
本当に注意する必要があると思いましたので,大きくしてみました…
間違ったパスワードを入力して証明書の更新を試みた場合,新しい証明書が作成出来ないのは当然として,既存の証明書も失効されてしまいます.
ですので,その場合はあらためてすぐに,失効した証明書から更新をかけて正しい証明書を作成する必要があります.
その為,上述の「証明書の失効」のところでリアルタイムにCRLを更新・配布する仕組みがあると破たんすると書いています…
この動きはどうなんだ? と思うのですが…
以上,証明書の管理でした.次は CRL と PHPki のアカウント管理ついて書こうと思います.
コメント