« ALONE | ホーム | 何度見ても「下駄マック」としか読めない件。 »

2007年1月25日

PrivateCAによるSSL証明書作成についてまとめ

Private CAのディレクトリを作ってCA.plを拾ってくる

/usr/local/etc/demoCAとでもしましょうか。で、/usr/lib/ssl/misc/あたりにころがってるCA.plがあるのでこれをそのディレクトリに放り込む。$CATOPは書き換える必要があるので注意。 ※2/5に手順を再度確認する機会があったので大幅に追記、編集。
$CATOP=".";

openssl.cnfをカスタマイズ

ここに気がつくまで右往左往しまくり。{countryName,stateOrProvinceName,localityName,0.organizationName}_defaultを適当に変えて、さらに "nsCertType = sslCA, emailCA" がコメントアウトされている部分を有効化させる。(←これをしないことによってCA証明書がSubject Type=End Entityになる。おかげでか非CA証明書として見られて証明書検証パスが通せずIE6でエラーが出まくった) また、[CA_default]セクションを以下のようにも。
dir = . # Where everything is kept
同じくサーバ証明書用設定ファイルと、クライアント証明書用のをそれぞれ作成。同じように "nsCertType = server", "nsCertType = client, email" となっている箇所を有効化すればいい。(CA用の場所はコメントしてね)

CA.pl -newca

いよいよnewcaの出番。環境変数SSLEAY_CONFIGでopensslコマンドに渡す引数がいじれる。
# export SSLEAY_CONFIG="-config ./demo.cnf"
# CA.pl -newca
起動後対話式に入力するパラメータは割愛。完了すればdemoCAディレクトリにcacert.pemが出来上がるので、これをApacheのCApathの通ったディレクトリ等にもっていく。そのディレクトリでCA証明書のハッシュリンクも忘れずに。
# ln -sf cacert.pem `openssl x509 -noout -hash < cacert.pem`.0
あとはブラウザにインポートするために適宜変換。
# openssl x509 -inform pem -in ./cacert.pem -outform der -out ./ca.der

サーバ証明書の作成

その次はサーバ証明書。demoCAの下にservers/(サーバのFQDN)みたいにして何個作ってもいいように。
# mkdir servers/example-site.jp
# cd servers/example-site.jp
# openssl genrsa -out server.key 1024
# openssl req -config ../../demo-server.cnf -new -key server.key -out server.csr
で、CSRを作ったあとはdemoCAに戻ってこいつを署名すればおけ。
# openssl ca -config ./demo-server.cnf -in servers/example-site.jp/server.csr \
 -keyfile private/cakey.pem -cert cacert.pem \
 -out servers/example-site.jp/cert.pem
最後にサーバの秘密鍵がパスワードついたままなの忘れてたので外しておきますよ。
# openssl rsa -in server.key -out server-nopass.key
こんなところかな。あとは適切なフォルダにここでできたserver-nopass.keyとcert.pemを移してApacheの設定に渡してrestartすればいいはず。クライアント証明書はまたこんど。

トラックバック(0)

トラックバックURL: http://foursics.jp/cgi-bin/mt/mt-tb.cgi/55

コメントする