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