自宅認証局(CA)を開局しよう

OpenSSLを使って自宅認証局、以下CAを開局していきます。
CAはユーザーから送られてきた署名要求書に署名・認証し証明書を発行する機関であり、証明書を使用するサーバーが本物であることをCAが保証するわけです。
使用するユーザー(サーバー)が自宅サーバー、保証するのも自宅CA、これでは一般的に信頼できるわけはありません。
だから信頼できるCAとしてベリサイン社などが存在するわけですね。
しかし自宅サーバーという趣味の世界でそこまでお金は掛けられませんので、自宅CAを開局していこうという方針です。

とりあえずCAを置くディレクトリなど前準備をしましょう。
私はCAを置くディレクトリを/var/ssl/CAとしました。

# cd /var
# mkdir ssl
# cd ssl
# mkdir CA
# cd CA
# mkdir certs crl newcerts private
# echo "01" > serial
# touch index.txt

このディレクトリに合わせてopenssl.cnfを編集します。
CentOS5の場合 /etc/pki/tls/openssl.cnfになります。
編集箇所は

[ CA_default ]
dir = ../../CA # Where everything is kept

dir = /var/ssl/CA # Where everything is kept

default_days = 365

default_days = 3650

です。
続いてCAを作成していきます。

# openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 3650
Generating a 1024 bit RSA private key
..++++++
...................................++++++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:CA秘密鍵パスワード
Verifying - Enter PEM pass phrase:CA秘密鍵パスワード
-----
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]:Shizuoka(都道府県)
Locality Name (eg, city) [Newbury]:Iwata(市町村)
Organization Name (eg, company) [My Company Ltd]:Mizushima Network Service(組織名)
Organizational Unit Name (eg, section) []:koko(所属)
Common Name (eg, your name or your server's hostname) []:mizushima.ne.jp(ドメイン)
Email Address []:>admin@mizushima.ne.jp(メールアドレス)

CA証明書 /var/ssl/CA/cert.pem
CA秘密鍵 /var/ssl/CA/private/cakey.pem
のできあがります。
以上でCAの開局、というよりCAの証明書、秘密鍵の作成は終了です。
お疲れ様でした。

サーバーの秘密鍵と署名要求書(CSR)を作成しよう