というわけで第四種オレオレ認証局を立ち上げようとしたら、少しはまったので手順メモ。
前提として、OpenSSLが入っていること。
わたしの環境(さくらのVPS)では最初から入っていたようです。
# yum list | grep openssl
openssl.i686 0.9.8e-22.el5_8.3 installed
openssl.x86_64 0.9.8e-22.el5_8.3 installed
openssl-devel.i386 0.9.8e-22.el5_8.3 installed
openssl-devel.x86_64 0.9.8e-22.el5_8.3 installed
#
1)下準備をする
OpenSSLの設定ファイルは /etc/pki/tls/openssl.cnf にあります。
設定変更をする場合は、このタイミングで。
作業場所は /etc/pki/tls/misc です。# ls -l /etc/pki/tls/openssl.cnf
-rw-r--r-- 1 root root 9999 May 6 11:43 /etc/pki/tls/openssl.cnf
#
このCAスクリプトをそのまま使うと、せっかく作ったCAがCAとして機能しないらしいので、ちょっと改造します。# cd /etc/pki/tls/misc/
# ls -l
total 40
-rwxr-xr-x 1 root root 3846 May 6 00:19 CA ←これを実行するのだが……
-rwxr-xr-x 1 root root 119 Apr 25 06:27 c_hash
-rwxr-xr-x 1 root root 152 Apr 25 06:27 c_info
-rwxr-xr-x 1 root root 112 Apr 25 06:27 c_issuer
-rwxr-xr-x 1 root root 110 Apr 25 06:27 c_name
#
バックアップを取って編集っと。
42行目を変更# cp -p CA CA.prig
# ls -l CA*
-rwxr-xr-x 1 root root 3846 May 6 00:19 CA
-rwxr-xr-x 1 root root 3846 May 6 00:19 CA.prig
# vi CA
変更前:CA="$OPENSSL ca $SSLEAY_CONFIG"この -extensions v3_ca がないと、CAで署名したサーバー証明書を使っても『署名の権限がない』とかで認証エラーになってしまいます。
変更後:CA="$OPENSSL ca $SSLEAY_CONFIG -extensions v3_ca"
CAなのに署名できないとかって、何のためのCAなんだか。
2)認証局(CA)を作る
認証局(以下CA)関係のファイルは /etc/pki/CA にできます。
一度作成失敗した場合など、ここに既に何かあると作成できません。その場合は削除や移動をします。
さっき改造した /etc/pki/tls/misc/CA を実行します。# ls -ld /etc/pki/CA
drwxr-xr-x 6 root root 4096 May 6 10:57 /etc/pki/CA
# rm -rf /etc/pki/CA
# ls -ld /etc/pki/CA
ls: /etc/pki/CA: No such file or directory
#
(以下、赤が必須入力、青はオプション。入力を求める行以外は省略)
# ./CA -newca/etc/pki/CA 内にファイルができています。
CA certificate filename (or enter to create)
【上位CAがあるなら指定、ないならそのままエンター】
Enter PEM pass phrase:【CA秘密鍵のパスワードを決めて入れる】
Verifying - Enter PEM pass phrase:【CA秘密鍵のパスワード】
Country Name (2 letter code) [GB]:JP 【国名、日本ならJP】
State or Province Name (full name) [Berkshire]:Saitama 【州か都道府県】
Locality Name (eg, city) [Newbury]:Ju-man-goku 【市区町村】
Organization Name (eg, company) [My Company Ltd]:AetherWorks 【組織名や法人名】
Organizational Unit Name (eg, section) []:Virtual Certification Authority【部署名、空でもよい】
Common Name (eg, your name or your server's hostname) []:AetherWorks Virtual Certification Authority 【FQDNを入れる欄だが、CAなので適当な名前を入れておく】
Email Address []:【連絡先メールアドレス、空でもよい】
A challenge password []:【よくわからないので空のまま】
An optional company name []:【よくわからないので空のまま】
Enter pass phrase for ../../CA/private/./cakey.pem:【CA秘密鍵のパスワード】
Check that the request matches the signature
Signature ok
(以下、作ったCAの情報が表示される)
cacert.pem を、パソコンにルート証明書としてインストールできるファイルに変換します。# ll /etc/pki/CA/
total 44
-rw-r--r-- 1 root root 7680 May 6 11:59 cacert.pem
-rw-r--r-- 1 root root 1789 May 6 11:59 careq.pem
drwxr-xr-x 2 root root 4096 May 6 11:58 certs
drwxr-xr-x 2 root root 4096 May 6 11:58 crl
-rw-r--r-- 1 root root 141 May 6 11:59 index.txt
-rw-r--r-- 1 root root 21 May 6 11:59 index.txt.attr
-rw-r--r-- 1 root root 0 May 6 11:58 index.txt.old
drwxr-xr-x 2 root root 4096 May 6 11:59 newcerts
drwxr-xr-x 2 root root 4096 May 6 11:58 private
-rw-r--r-- 1 root root 3 May 6 11:59 serial
-rw-r--r-- 1 root root 3 May 6 11:58 serial.old
#
この cacert.der をダウンロードし、PCにルート証明書としてインポートしておきます。# openssl x509 -in /etc/pki/CA/cacert.pem -outform DER -out cacert.der
# ls -l cacert.der
-rw-r--r-- 1 root root 1697 May 6 12:14 cacert.der
#
サーバーの利用者が他にもいるなら、その人たちにも証明書を渡してインポートしておいてもらいましょう。
これでCAのできあがりです。次回はCAを使ってサーバー証明書を作ります。
○参考サイト
OpenSSLで自己認証局と証明書の作成 - bnote
CentOS の Apache でクライアント証明書認証(修正版) - tkoshima.net
OpenSSLでオレオレ認証局を立ち上げる | www.tietew.jp