多段の中間CA証明書作成 -動作検証編-

| | Comments (0) | TrackBacks (0)
前回多段の中間CA証明書作成 -証明書作成編-と題して記事を書きましたが、今回は続編として作成した多段の中間CA証明書の動作検証を行ってみたいとおもいます。
前回のスクリプトで鍵を作成すると、カレントディレクトリにそれぞれca<数字>という名前のディレクトリに下に各中間CAの秘密鍵、CSR、証明書があるかと思います。
このそれぞれのCAの秘密鍵を使用し、作成したサーバ証明書に署名することで多段のCA証明書により署名されたサーバ証明書を作成することができます。
例えば、ca5の中間CA証明書を使用し署名した場合、rootCAからサーバ証明書までの間に5つのCAが存在するサーバ証明書が作成されます。

では、その中間CAが5個のサーバ証明書を作成してみたいと思います。
$ openssl req -new -keyout server.key -out server.csr
Generating a 1024 bit RSA private key
.++++++
.......................++++++
writing new private key to 'server.key'
Enter PEM pass phrase:<サーバ証明書の秘密鍵のパスワード>
Verifying - Enter PEM pass phrase:<サーバ証明書の秘密鍵のパスワード(確認)>
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Shibuya
Organization Name (eg, company) [My Company Ltd]:HDE, Inc.
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:<サーバのホスト名>
Email Address []:.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:[Enter]
An optional company name []:[Enter]
$ openssl x509 -CA ca5/ca.crt -CAkey ca5/ca.key -req -in server.csr -out server.crt -CAcreateserial
これで5番目の中間CAによって署名されたサーバ証明書の完成です。
作成したものはserver.key(秘密鍵)、server.crt(証明書要求)、server.crt(サーバ証明書)の3つです。

次に作成したサーバ証明書をWebサーバで使用するように設定します。
CentOS5.2に付属のApache(2.2.3)を使用しました。
まず、作成したサーバ証明書と秘密鍵を任意の場所に配置します。
今回はテストなのでとりあえず/tmp以下に配置しました。
配置したら、次にApacheのSSLについての設定ファイルの/etc/httpd/conf.d/ssl.confの下記項目を以下のように編集します。
SSLCertificateFile /tmp/server.crt
SSLCertificateKeyFile /tmp/server.key
SSLCertificateChainFile /tmp/ca-chain.crt
SSLCertificateChainFileはSSLセッション開始時に送信する必要な中間CAの証明書の一覧を指定します。
中身は中間CA証明書をサーバ証明書に近い順につなげたものです。
下記のようなスクリプトで簡単に作成することができます。
#!/bin/sh

max=$1
i=1

while [ $i -le $max ]
do
  cat ca$max/ca.crt|grep -v '^ '|grep -v 'Cert' >> ca-chain.crt
  max=`expr $max - 1`
done
上記のスクリプトを使用すると、カレントディレクトリにca-chain.crtという中間CAの証明書の一覧が記述されているファイルが作成されます。
これを今回は/tmp以下にコピーして利用します。
設定を終えたら最後にApacheを再起動すれば完了です。

次にクライアントにルート証明書のインストールを行います。
ルート証明書は作成したrootCAの証明書(rootca/ca.crt)をダウンロードし、インストールします。
今回はFirefox3にインストールを行い、動作確認をしました。

ルート証明書のインストールが終了したら実際にアクセスしてみます。
すると自己署名証明書などででる警告などが表示されずに、SSL通信が開始されたかと思います。
これはさきほどのルート証明書をインストールしたためです。
右下の鍵マークをダブルクリックすると証明書の情報が表示され、証明書を表示ボタンを押し詳細タブをクリックすると確かに階層構造になっているのがわかるかと思います。

1.JPG
今回は中間CAが5段の証明書を試してみましたが、次回はさらに多段の証明書を作成してみたいと思います。

0 TrackBacks

Listed below are links to blogs that reference this entry: 多段の中間CA証明書作成 -動作検証編-.

TrackBack URL for this entry: http://lab.hde.co.jp/blog/mt-tb.cgi/62

Leave a comment

About this Entry

This page contains a single entry by takayasu published on September 16, 2008 4:55 PM.

Pythonの小技 -文字列フォーマットの自動生成- was the previous entry in this blog.

Twistedに挑戦(インストールするゼ) is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.