CA 構築のための OpenSSL の設定

OpenSSL とは

OpenSSL は,http://www.openssl.org/ にて開発されている SSL (Secure Socket Layer) や,TSL (Transport Layer Security) の実装です.SSL や TLS を使うためのプログラムや,ライブラリを含んでいて,これらを利用することにより CA を作成することができます.

インストール

CA の設定

openssl.cnf の設定

openssl.cnf には,openssl コマンドを使う際に,デフォルトの動作を記述します.CA を実現するために利用するディレクトリや,CA の証明書ファイル名などが記述されています.下記に示すのは,openssl.cnf の一部です.

[ CA_default ]

dir             = ./demoCA              # Where everything is kept
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
new_certs_dir   = $dir/newcerts         # default place for new certs.

certificate     = $dir/cacert.pem       # The CA certificate
serial          = $dir/serial           # The current serial number
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# The private key

dir
この CA が利用するディレクトリを指定します.上記のようにデフォルトでは,相対パスにより指定されています.絶対パスに変更したほうが,カレントディレクトリを考慮する必要がないため便利です.
certs
このディレクトリに保存されている証明書を利用して証明書の検証を行います.検証に必要な証明書を容易に探すために,ファイル名を, 「hash 関数に通した値」.0 する必要があります
crl_dir
このディレクトリに保存されている CRL(Certification Revocation List 破棄された証明書の一覧表)を利用して証明書の検証を行います.検証に必要な CRL を容易に探すために,ファイル名を, 「hash 関数に通した値」.r0 する必要があります.
database
この CA が証明書のは署名状況や破棄状況を記録するためのデータベースファイルです.テキスト形式なので人間でも読めます.
new_certs_dir
この CA が発行した証明書が保存されます.証明書のファイル名は,証明書に署名した発行した順につけられるシリアル番号を含んだものになります.
certificate
この CA の証明書ファイル名です.
serial
署名済みの証明書には,署名順に割り当てられたシリアル番号が含まれます.このファイルには,この CA が次回利用すべきシリアル番号が保存されます.
crl
この CA が発行した CRL です
private_key
この CA の秘密鍵です.

CA 証明書の作成

openssl req -new -x509 -newkey rsa:2048 -out cacert.pem -keyout private/cakey.pem
openssl req -new -newkey rsa:2048 -out cacert_req.pem -keyout private/cakey.pem
ln -s cacert.pem certs/`openssl x509 -noout -hash < cacert.pem`.0

上位 CA の証明書がある場合は,同様のシンボリックリンクを作成する.

openssl ca -gencrl -out crl.pem
ln -s crl.pem crl/`openssl crl -noout -hash < crl.pem`.r0

上位 CA の CRL が存在する場合は,同様のシンボリックリンクを作成する.

証明書の破棄

証明書を破棄するためには,破棄するべき証明書が必要になる.よって,CA に対し,破棄を申請する証明書を送る必要がある. CA 管理者の判断で証明書を破棄する場合,過去署名した証明書は, newcerts に保存されているためこれらを利用する.

証明書を破棄するには,以下のようにする.

openssl ca -revoke 01.pem

また,破棄を CRL に反映させるためには以下のようにする.

openssl ca -gencrl -out crl.pem

プロファイルの管理

追加予定です

質問、コメントなどは、moCA WG まで送り下さい。 #moCA WGに関わる連絡先
moCA WG, WIDE Project, Jun., 2003