SSLオレオレ認証サーバの設定方法メモ

マルチポスト元→http://exth.net/~tgbt/wordpress/2009/11/04/2673/


うまくできたと思っていたらうまくできていなくて,完全にはまってしまって時間を浪費したのでメモっておく.


要求:オレオレ認証.ただし,認証者と認証対象を分けたい.


既にhttp://hatesate.dip.jp/myserver/2007/10/smtp.htmlあたりを見てうまくできていたつもりだったんだけど,どうやら認証者と認証対象が同じケースだった模様.
今回新たに参考にしたのはオデの日記@WEB系: opensslを使って秘密鍵と証明書の作成
何となくわかった気がする.

ちなみに,グーグル先生に聞くと,openssl.confとかの設定ファイルを使う方法やらCA.plないしCA.shを使う方法なんてのも出てくる.今回のはもっとシンプルな方法かしら?
モアベターな方法があるもかもしれないけど,とにかく最低限の要求は満たせたので良しとする.

CA(認証局)=認証者の情報を作る

create random file
# ps aux > rand.dat

create CA private key
# openssl genrsa -des3 -out ca.key -rand rand.dat 1024

create CA crt
# openssl req -new -x509 -days 365 -key ca.key -out ca.crt

ランダムファイルを作る必要があるのか,この作り方が妥当なのかは今ひとつだけど,これで認証局の情報が作れる.

サーバ=認証対象の情報を作る

create rand file
# ps aux > rand.dat

create private key
# openssl genrsa -des3 -out server.key -rand rand.dat 1024

create non_password key
# openssl rsa -in server.key -out server_np.key

create public key
# openssl req -new -key server_np.key -out server.csr

create pem
# opnessl x509 -in server.csr -out server.pem -req -signkey server_np.key -days 365

これでserver_np.keyという認証キーに対する認証要求server.csrが作れる.あとはこいつを認証局で認証すればOK.

認証する

create serial number
# echo 00 > serial.txt

sign
# openssl x509 -CA ../ca/ca.crt -CAkey ../ca/ca.key -CAserial serial.txt -req -days 365 -in ../server/server.scr -out server.crt

認証完了.ちなみにシリアルナンバーは適当にインクリメントされる模様.

補足

CA生成時に入力したCN情報が認証者,サーバ生成時に入力したCN情報が認証対象として扱われるようになる.ThnuderbirdとFirefoxで確認した.
それから,認証したものを却下するにはopenssl ca -revokeを使うらしい.らしいのだが,うまくいかなかった.