前回多段の中間CA証明書作成 -証明書作成編-と題して記事を書きましたが、今回は続編として作成した多段の中間CA証明書の動作検証を行ってみたいとおもいます。
前回のスクリプトで鍵を作成すると、カレントディレクトリにそれぞれca<数字>という名前のディレクトリに下に各中間CAの秘密鍵、CSR、証明書があるかと思います。
このそれぞれのCAの秘密鍵を使用し、作成したサーバ証明書に署名することで多段のCA証明書により署名されたサーバ証明書を作成することができます。
例えば、ca5の中間CA証明書を使用し署名した場合、rootCAからサーバ証明書までの間に5つのCAが存在するサーバ証明書が作成されます。
では、その中間CAが5個のサーバ証明書を作成してみたいと思います。
これで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の下記項目を以下のように編集します。
SSLCertificateChainFileはSSLセッション開始時に送信する必要な中間CAの証明書の一覧を指定します。
中身は中間CA証明書をサーバ証明書に近い順につなげたものです。
下記のようなスクリプトで簡単に作成することができます。
上記のスクリプトを使用すると、カレントディレクトリにca-chain.crtという中間CAの証明書の一覧が記述されているファイルが作成されます。
これを今回は/tmp以下にコピーして利用します。
設定を終えたら最後にApacheを再起動すれば完了です。
次にクライアントにルート証明書のインストールを行います。
ルート証明書は作成したrootCAの証明書(rootca/ca.crt)をダウンロードし、インストールします。
今回はFirefox3にインストールを行い、動作確認をしました。
ルート証明書のインストールが終了したら実際にアクセスしてみます。
すると自己署名証明書などででる警告などが表示されずに、SSL通信が開始されたかと思います。
これはさきほどのルート証明書をインストールしたためです。
右下の鍵マークをダブルクリックすると証明書の情報が表示され、証明書を表示ボタンを押し詳細タブをクリックすると確かに階層構造になっているのがわかるかと思います。
今回は中間CAが5段の証明書を試してみましたが、次回はさらに多段の証明書を作成してみたいと思います。
このそれぞれの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
作成したものは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
中身は中間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
これを今回は/tmp以下にコピーして利用します。
設定を終えたら最後にApacheを再起動すれば完了です。
次にクライアントにルート証明書のインストールを行います。
ルート証明書は作成したrootCAの証明書(rootca/ca.crt)をダウンロードし、インストールします。
今回はFirefox3にインストールを行い、動作確認をしました。
ルート証明書のインストールが終了したら実際にアクセスしてみます。
すると自己署名証明書などででる警告などが表示されずに、SSL通信が開始されたかと思います。
これはさきほどのルート証明書をインストールしたためです。
右下の鍵マークをダブルクリックすると証明書の情報が表示され、証明書を表示ボタンを押し詳細タブをクリックすると確かに階層構造になっているのがわかるかと思います。
今回は中間CAが5段の証明書を試してみましたが、次回はさらに多段の証明書を作成してみたいと思います。
Leave a comment