2012年05月06日

[SSL]認証局のつくりかた in CentOS5

 最近VPSが流行ってきたので、自PCとの間で安価に暗号化通信をしたいという需要も高まってきているのではと思います。というか自分がそう思ってます。
 というわけで第四種オレオレ認証局を立ち上げようとしたら、少しはまったので手順メモ。

 前提として、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 にあります。
 設定変更をする場合は、このタイミングで。
# ls -l /etc/pki/tls/openssl.cnf
-rw-r--r-- 1 root root 9999 May 6 11:43 /etc/pki/tls/openssl.cnf
#
 作業場所は /etc/pki/tls/misc です。
# 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
#
 このCAスクリプトをそのまま使うと、せっかく作ったCAがCAとして機能しないらしいので、ちょっと改造します。
 バックアップを取って編集っと。
# 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
 42行目を変更
変更前:CA="$OPENSSL ca $SSLEAY_CONFIG"
変更後:CA="$OPENSSL ca $SSLEAY_CONFIG -extensions v3_ca"
 この -extensions v3_ca がないと、CAで署名したサーバー証明書を使っても『署名の権限がない』とかで認証エラーになってしまいます。
 CAなのに署名できないとかって、何のためのCAなんだか。


2)認証局(CA)を作る

 認証局(以下CA)関係のファイルは /etc/pki/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
#
 さっき改造した /etc/pki/tls/misc/CA を実行します。
 (以下、赤が必須入力、青はオプション。入力を求める行以外は省略)
# ./CA -newca
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の情報が表示される)
 /etc/pki/CA 内にファイルができています。
# 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.pem を、パソコンにルート証明書としてインストールできるファイルに変換します。
# 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
#
 この cacert.der をダウンロードし、PCにルート証明書としてインポートしておきます。
 サーバーの利用者が他にもいるなら、その人たちにも証明書を渡してインポートしておいてもらいましょう。

 これでCAのできあがりです。次回はCAを使ってサーバー証明書を作ります


○参考サイト

OpenSSLで自己認証局と証明書の作成 - bnote
CentOS の Apache でクライアント証明書認証(修正版) - tkoshima.net
OpenSSLでオレオレ認証局を立ち上げる | www.tietew.jp
posted by きさらぎ at 12:42| Comment(0) | TrackBack(0) | サーバー
この記事へのコメント
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/55685521
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック