CA.sh を使わずに、openssl コマンドでサーバの証明書や鍵と 独自 CA を作るメモ。 余計な事は良いから https なテストサーバが作りたいんじゃという人は最後にジャンプ。
ただ、用語がかなり怪しいです。あってるのかな……
openssl genrsa -des3 -out server.key.secure 1024
パスフレーズを求められるので入力する。 後でパスフレーズを取り除く(復号)するなら、適当でも構わない。
生成されたファイルは暗号化されているが、一応扱いには注意すること。 他の人から読めないようにアクセス権を設定しておく。
chmod 400 server.key.secure
ちなみに -des3 等の暗号化オプションを付けなければ、最初から生の鍵を生成出来る。
openssl rsa -in server.key.secure -out server.key
鍵の作成時に入力したパスワードを要求される。
秘密鍵を暗号化されたままにして置いた方が、よりセキュリティーは高いが、 その場合は apache 等のサーバを起動する毎にパスワードの入力を求められる。
ここで生成したファイルは本当に注意して扱うこと。 このファイルが他人から読めてしまうと意味がない。
chmod 400 server.key
openssl req -new -key server.key -out server.csr
サーバに関する情報を質問されるので入力する。
注意すべきは1点。 Common Name は実際にユーザがアクセスする(DNSに登録された)サーバ名 と必ず同じでなければならない。hostname コマンドで得られるようなマシン名でなはい。
必要に応じて -config openssl.cnf 等で好きな設定ファイルを指定する事もできる。 例えば、入力する項目を増やしたい場合や、ノンインタラクティブで処理したい場合は 設定ファイルを書けば良い。
実は一気に出来る方法がある。
openssl req -new -nodes -keyout server.key -out server.csr
-nodes オプションを外せば暗号化した鍵が出来る。 上と同じく-config オプションも一緒に使えば入力を省略することも可能。
同じく鍵の扱いに注意。
chmod 400 server.key
先ほど生成した server.csr を認証局に送ってサインして貰う。 VeriSign やボルチモア等が有名。 NTT-Com の BLADE が安いようです。
テスト用のみなら、 local CA を構築する事も出来る。 その場合は次のセクションを参考。
返送された署名済みのファイル server.crt をサーバに設定する。
mkdir myCA mkdir myCA/certs mkdir myCA/crl mkdir myCA/newcerts mkdir myCA/private echo 01 > myCA/serial touch myCA/index.txt
パーミッションに注意すること。
システム標準の openssl.cnf をコピーしてきて、[ CA_default ] のセクションを 適当に書き換える。基本的に dir だけで良いはず。 以下では書き換えたファイル名を openssl-myca.cnf とする。
システム標準の openssl.cnf に [ CA_default ] を参考にして自分の CA のエントリを 追加 する。また、その CA をディフォルトで使いたければ [ ca ] セクションの default_ca を自分の CA の名前に書き換える。
以下の説明は設定ファイルをコピーした場合の例になっているので、 -config openssl-myca.cnf を -name yourCAname と置き換えて読むこと。
openssl req -config openssl-myca.cnf -new -x509 \ -keyout myCA/private/cakey.pem -out myCA/cacert.pem -days 30
パスフレーズ及び CA の情報を求められるので入力する。 このパスフレーズは、署名する都度必要なので覚えておくこと。
openssl ca -config openssl-myca.cnf -policy policy_anything \ -out server.crt -infiles server.csr
CA の鍵のパスフレーズが求められるので入力する。
今まで書いたのは何だと言う感じだけど、すべての手順を1コマンドで出来る。
openssl req -new -x509 -nodes -keyout server.key -out server.crt
これで暗号化していない鍵と、自己署名証明書が出来る。(CAは出来ない)
しつこいけどアクセス権の変更を忘れずに。
chmod 400 server.key chmod 444 server.crt
突っ込みどうぞ:
1: 名前: ?名無しさん 投稿日: 2003/11/28 (金) 15:51
2: 名前: ?der 投稿日: 2004/03/05 (金) 21:39
ついでだから*.derについても記載しておくといいかも?
3: 名前: ?名無しさん 投稿日: 2005/03/21 (月) 05:24
パスフレーズを取り除く理由がapache+mod_sslの再起動が問題ならばパスフレーズを外すより、パスフレーズを返すプログラムを作って SSLPassPhraseDialog exec:プログラム としたほうがよいかなと思います。 詳しくは SSLPassPhraseDialog 検索してください。