LinuxインターネットサーバーのSSL証明書管理
〜Kousec Server Certificate Managerの導入効果の検証〜
第三回 証明書仕様の定義と証明書の取得
株式会社コウセック・ソフトウェア
Copyright 2009 Kousec Software, Inc. All rights reserved.
All company names and product names are trademarks of their respective holders.
シリーズインデックス
http://www.kousec.com/prod_cm_ja.html
第一回: 検証構成とSSL証明書の取得・配備計画
PDF: http://www.kousec.com/tj/tj_review_S1.pdf
第二回: サーバー上でのSSL設定作業
PDF: http://www.kousec.com/tj/tj_review_S2.pdf
第三回: 証明書仕様の定義と証明書の取得
PDF: http://www.kousec.com/tj/tj_review_S3.pdf
第四回: 証明書の配備と監視
PDF: http://www.kousec.com/tj/tj_review_S4.pdf
第五回: セキュリティと運用のベストプラクティス
PDF: http://www.kousec.com/tj/tj_review_S5.pdf
Table of Contents
証明書仕様の定義と証明書の取得...................................................................................... 5
Kousec Server Certificate Managerのインストールと設定........................................... 5
メールの送受信の設定を行う...................................................................................... 5
CertMgrアプリケーションのセキュリティ設定を行う............................................... 6
CertMgrを使ったSSL証明書の取得と配備の流れ........................................................ 7
最初の証明書を取得する (www.example.com for Apache)............................................ 9
証明書定義を作成する................................................................................................. 9
取得プロセスを実行する........................................................................................... 14
残りの証明書も取得する............................................................................................... 21
ldap.example.com (OpenLDAP)............................................................................... 21
smtp.example.com (Postfix)...................................................................................... 21
pop.example.com (Dovecot)...................................................................................... 22
www2.example.com (vsftpd, Tomcat6)..................................................................... 22
作業の確認.................................................................................................................... 23
今回のまとめ................................................................................................................ 25
前回は、Ubuntu Server上で各サーバーソフトウェアのSSL証明書の場所を決め設定を行いました。今回は、いよいよKousec Server Certificate Managerを使ってCAのSSL証明書を取得していきます。
Kousec Server Certificate Manager (以下、CertMgr)はWindows上で稼動するウェブアプリケーションです。クライアントはIEやFirefox等のウェブブラウザーが使えます。正確なシステム要件はCertMgrの説明書を参照する必要がありますが、Windows XPにインストールする場合はほかに必要な必須コンポーネントはありません。オプションコンポーネントとしてはJava Runtime Environment 1.5以上が指定されています。(Java Keystoreから証明書などをインポートする場合に必要です)。
インストール終了後、スタートメニューの Kousec Server Certificate Managerのメニューから [Open Certificate Manager]を選択するとウェブブラウザーが開きます。デフォルトのユーザー・パスワード、admin・adminを入力してログインすると、ホーム画面が開きます。

図 1 CertMgr ホーム画面
画面右下の[初期セットアップ]をクリックするとUser Settingsという画面が開きます。
CertMgrはCertMgr管理者(本ソフトの主な利用者)やサーバー管理者などにさまざまな通知・アラートメールを送付します。したがって、CertMgr管理者の情報とメール設定(送信)に、メールを受け取るアドレスと、CertMgrが使用するメール送信情報を設定しておきます。最後にテストメールの送信ボタンを押し、メールが届くことを確認します。

CertMgrアプリケーションのセキュリティ設定を行う
次にadminユーザーのデフォルトパスワードを変更します。
同一画面のページ下部にある[自分のパスワード]をクリックします。
![]()

デフォルトのパスワードと設定したい新パスワードを入力して保存を押します。
またデフォルトではCertMgrのウェブサーバーへのアクセスは192.168.x.xのIPアドレスを持つPCからしかアクセスできません。変更方法についてはマニュアルを参照してください。
他の設定については、必要になった時点で設定すればよいでしょう。左のメニューから[証明書の管理]をクリックし、証明書の管理画面に移動します。
CertMgrを使う場合、下記のような作業の流れになります。
1.
証明書定義の作成
証明書の要件仕様に基づいて作成していきます。ディスティングイッシュネーム(DN)の各項目、カバーするホスト名、認証のレベル(EV・組織・ドメイン)などを入力します。また購入すべきCA・特定のSSL製品名等や、どのサーバーに配備するか・サーバーソフトの種類なども設定できます。
2.
証明書取得プロセスを実行し、証明書をCAから取得する
実際に証明書を取得する時に、証明書定義から証明書取得プロセスを開始し、それに従って証明書を購入・受取り・CertMgr内に格納します。
3.
証明書配備プロセスを実行し、証明書をサーバーに配備する
目的の証明書の取得が終わったら、CertMgr内に格納されている証明書を、サーバーにインストールし監視設定を行います。
CertMgr内のオブジェクト
証明書定義・証明書要求・証明書、という3つのメインオブジェクトが生成されます。証明書定義オブジェクトはその名のとおり、証明書定義を作成すると生成されます。証明書要求オブジェクトは、証明書の取得プロセスが開始されると自動的に生成されます。証明書オブジェクトは証明書の配備プロセスが開始されると自動的に生成されます。
CertMgrのマニュアルからの図を下記に引用します。

図 2 プロセスとオブジェクトの関係
取得プロセスおよび配備プロセスは終了すると存在を終えますが、それに対応したオブジェクトはCertMgr内に残ります。サイドメニューの項目とは以下のように対応します。

図 3 サイドメニューとオブジェクト・プロセスとの関係
では最も頻繁に使われるであろう www.example.com (Apache用) の証明書について、証明書定義を作成、取得プロセスを実行し証明書を取得します。
サイドメニューから[証明書定義]をクリックすると証明書定義の一覧画面が開きます。ページの下部に2つのボタンがあります。[新規に証明書定義を作成]と[証明書をインポート]です。
![]()

[証明書をインポート]を選択すると、既存の証明書からディスティングイッシュネーム(DN)の値などを読み出し、それを基に証明書定義を作成します。各種形式の証明書ファイルや指定されたURLから証明書をインポートできます。
今回の検証では、サーバーソフトウェアのSSL設定時に生成した自己署名証明書はありますが、DN情報等が適切ではないため、[新規に証明書定義を作成]を選択します。 クリックすると 証明書定義 - 追加画面が現れます。この画面に情報を入力していきます。
基本情報
基本情報では、本証明書定義のニックネームと、本証明書を使用するプロジェクト名またはクライアント名を入力します。ニックネームは省略すると後ほど入力するDNのコモンネームが使われます。必要に応じてwww.example.com-test1というように接尾語を付けることもできます。
![]()

ディスティングイッシュネーム(DN)
証明書の発行先(申請者)のDNを入力します。コモンネームにこの証明書のホスト名(www.example.com)を入力します。後ほど取得プロセス内のCSR生成時において、ここで入力した値を基にしますがそこでも追加変更できます。ここでは仮の情報でもよいのでコモンネームと国コードなどを入力します。
![]()
![]()
![]()

製品の選択
ここでは購入すべきSSL証明書製品の仕様・製品名や有効期間などを指定します。後ほどの取得プロセスにおいて、これらを変更することができます。ここでは証明書製品として内蔵プライベートCAが発行する証明書(Private CA : Single)を選択します。
![]()

証明書配備
ここでは証明書の配備に関する情報を入力します。後ほどの配備プロセスにおいて、これらを変更することができますので、現時点で分かっていることや仮の情報だけでも入力していきます。
ここでは サーバーソフトウェアのタイプとしてApache/Linuxを選択、サーバー名は server1 と入力しました。また本サーバーの管理者のEメールアドレスも入力します。
![]()
![]()
![]()
![]()

保存
最後に、必要に応じてこの証明書定義に関するメモを入力し、[保存]ボタンをクリックします。内容がチェックされ、保存結果が画面上に表示されます。
![]()

書類フォルダー
保存が成功した場合、本証明書定義のメモの下に書類フォルダーという項目が表示されるようになります。[Create Doc Folder]ボタンをクリックすると書類フォルダーが作成されます。そして作成された書類フォルダーへのリンクが表示されるようになります。
![]()

[開く]というリンクをクリックすると、別のウェブブラウザー画面が開きそこにウェブベースの書類フォルダー画面が表示されます。その前にユーザー認証画面が表示されますが、そこでも同じユーザー・パスワードを入力します。

これで証明書定義の作成が完了しました。また必要に応じて証明書定義一覧画面から選択し、いつでも変更が可能です。
作成した証明書定義を使って実際に証明書を取得するには、該当の証明書定義画面を開きページ下部の[新規に証明書を取得]ボタンをクリックします。
![]()

「新たに取得プロセスを開始し、ベンダーから証明書を取得しますか」という確認メッセージが表示され、OKをクリックすると証明書要求 - CSR生成 画面が表示されます。
CSR生成
CSR生成画面では、証明書定義で指定したDNに基づいた値が入力されています。基本情報にあるニックネームは本証明書要求オブジェクトのニックネームであり、デフォルトでは証明書定義のニックネームに証明書要求の内部番号が付与された値となっています。
秘密鍵の鍵長も指定できますがデフォルトの2048ビットから変更する必要はないでしょう。
ページ下の[CSR生成]ボタンをクリックし、次に進みます。
![]()

SSL証明書製品を選択・購入
このステップではSSL証明書製品の選択し、その後証明書ベンダーのサイトにて注文を行います。
生成済みCSR の行のボタンをクリックすると生成したCSRのテキストがブラウザーのクリップボードにコピーされます。そして[Go to Vendor’s Purchase Page]をクリックすると別のウィンドウで該当CAの購入ページが開きます。
CAのシステムで注文を行い、注文日、注文番号などを本画面に入力します。
今回は内蔵プライベートCAから証明書を発行するので、本画面では何も追加せずに、ページ下部の[確認ページへ]ボタンをクリックし進みます。
![]()
![]()
![]()

注文情報の確認ページで内容を確認し、[注文情報を登録]をクリックします。
ベンダーから証明書を受け取る
このステップではCAから受け取った証明書ファイルをCertMgrのリポジトリーに登録します。
内蔵プライベートCAからの証明書の場合、[Generate Certificate]ボタンをクリックすると自動的にサーバー証明書と関連CA証明書が登録され、画面上にも表示されます。
![]()
![]()

確認ページでは、受け取った証明書のDNや有効期限、鍵長などが表示されますので、確認を行います。最後に[この証明書を登録]をクリックします。
現行証明書の切り替え
証明書がリポジトリに登録されると、その有効期間がチェックされます。もし現時点で既に証明書がその有効期間に入っていれば、下記のように、本証明書を現行証明書に設定できるというメッセージが表示されます。
![]()

現行証明書に設定するという意味は、他の証明書(例えばまだ有効期限が残っているかもしれない一つ前の証明書など)ではなく、この証明書こそが正しい証明書であるとCertMgrに宣言するということです。
ボタンをクリックすると画面が切り替わり、旧証明書と新証明書を並べて確認を求めてきます。
![]()

[現行証明書として設定]をクリックすると、取得プロセスが完了します。

次に、配備プロセスには進まずにトップページに戻り、サイドメニューから確認してみます。
証明書定義を確認
証明書定義一覧画面では、該当証明書定義の行がオレンジで示されています。これは、宣言された現行証明書がサーバーに配備されたことが確認できていないからです。この証明書定義を開くには左側Action列の[編集]ボタンをクリックします。
![]()

取得プロセスを確認
取得プロセス一覧画面には、該当取得プロセスが表示されていません。これはこの画面がまだ完了していない取得プロセスだけを表示するからです。
配備プロセスを確認
先ほど本証明書を現行証明書に切り替えたので配備プロセスが自動的に開始されています。ステータスは「配備可能」となっています。この証明書を開くには左側Cert ID列の番号文字列をクリックします。
![]()

では、残りの証明書についても同様に証明書定義作成し証明書を取得していきます。
www.example.comとの違いについてのみ列挙していきます。
また、証明書配備に関する細かい設定は、ここでは行わず次回の証明書配備プロセスの中で説明していきます。
CertMgr上の操作としては、先ほど作成した証明書定義をコピーしていくとよいでしょう。
![]()

コピーを行うと、同じ内容を持つ新たな証明書定義が作成され開きます。それを変更してきます。
証明書定義作成
· ニックネームとDNのコモンネームを ldap.example.com に設定
· 証明書配備のサーバーソフトウェアタイプを Openssl に設定
取得プロセスの実行
www.example.comのときと変わりありません。
証明書定義作成
· ニックネームとDNのコモンネームを smtp.example.com に設定
· 証明書配備のサーバーソフトウェアタイプを Openssl に設定
取得プロセスの実行
www.example.comのときと変わりありません。
この証明書には2つのホスト名、pop.example.comとimap.example.comを登録する必要があります。そのために、証明書製品としてはマルチドメイン証明書を選択する必要があります。そしてDNのドメイン名リストに両方のホスト名を入力します。
証明書定義作成
· ニックネームとDNのコモンネームを pop.example.com に設定
·
DNの複数ドメイン名にチェックを入れ、ドメイン名リストに2つのホスト名を入力する

·
製品の選択の証明書製品リストボックスにおいて、Private CA: UCCを選択

· 証明書配備のサーバーソフトウェアタイプを Openssl に設定
取得プロセスの実行
www.example.comのときと変わりありません。
www2.example.com (vsftpd, Tomcat6)
pop.example.com証明書と同様に、この証明書には2つのホスト名、www2.example.comとftp.example.comを登録する必要があります。そのために、証明書製品としてはマルチドメイン証明書を選択する必要があります。そしてDNのドメイン名リストに両方のホスト名を入力します。
またインストール対象のサーバーはvsftpdとTomcat6の2つです。しかし、このような証明書配備の方法は、現在のKousec Server Certificate Managerでは対応していないケースとなっています。CertMgrでは一つの証明書につき一つのサーバーソフトウェアにしか証明書をインストールしないと想定しているからです(将来のバージョンで対応する予定とのこと)。複数のサーバーソフトウェアに同一証明書をインストールする必要がある場合は、どれか一つのサーバーソフトウェアを選択する必要があります。
今回の検証では、配備プロセスにおいて一度vsftpdを選択しインストールを行い、その後ステップを一つ戻してTomcatを選択しなおして配備プロセスを完了させることにします。
証明書定義作成
· ニックネームとDNのコモンネームを www2.example.com に設定
·
DNの複数ドメイン名にチェックを入れ、ドメイン名リストに2つのホスト名を入力する。pop.example.comと同様にドメイン名リストに下記を入力。
www2.example.com, ftp.example.com
· 製品の選択の証明書製品リストボックスにおいて、Private CA: UCCを選択
· 証明書配備のサーバーソフトウェアタイプを Openssl に設定。(まずはvsftpdを想定する)
取得プロセスの実行
www.example.comのときと変わりありません。
ここまでの作業結果を確認します。
証明書定義一覧
以下のように5つ存在し、すべて配備ステータスは「配備未確認」となっているはずです。

取得プロセス一覧・配備プロセス一覧
取得プロセスは5つとも完了しているので表示されないはずです。
配備プロセスは以下のように5つ存在し、全て配備ステータスは「配備可能」になっているはずです。

証明書一覧
以下のように5つ存在しているはずです。

現在の状況をCertMgrは次のように認識しています。
現行証明書であると宣言された証明書について、配備作業中(すなわち配備プロセス進行中)であり、まだ正しくインストールされたことが確認できていない。
今回のポイントをまとめます。
第一回で決めた証明書仕様5個に対応する証明書定義を作成しました。それぞれに対して取得プロセスを開始し、内蔵プライベートCAから証明書を発行しました。次のステップは、それら証明書をサーバーに配備することです。
CertMgrの現在の制限として、一つの証明書を複数のサーバーソフトウェアにインストールすることが想定されていないので、そのようなケースでは配備プロセスにおいて運用で回避する必要があります。
今回は内蔵プライベートCAから証明書を発行したので申請作業がありませんでしたが、実際に商用CAから証明書を取得すると申請作業と待ちが発生しますので、その分も考慮しスケジュールを立てる必要があります。
なお、内蔵プライベートCAから発行したサーバー証明書をクライアントPCが信頼するにはプライベートCAの証明書をクライアントPCにインストールする必要があります。(CA証明書のインストーラーEXE(Windows用)がCertMgr上からダウンロードできます)。また内蔵プライベートCAを別のCAの下位CAとしても設定できるとのことなので、例えばWindows証明書サービスを使ってEnterprise CAを展開している環境ではその必要がなくなるでしょう。
次回は、CertMgrを使用してUbuntu Serverへの証明書の配備と証明書の監視を設定していきます。