Apache で SSL のテストをする際に certificate を作成する方法をいつも探しているのでメモ。
とりあえず openssl だけ yum とか apt-get でインストールしておく。
まず初めにサーバにセットする秘密鍵を生成する。
$ openssl req -sha256 -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr$ openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout server.key -out server.csr$ openssl genrsa -des3 -out server.key 1024
これで RSA の 2048 ビット秘密鍵と、Certificate Signing Request が同時に生成できる。
この場合、次のステップの Certificate Signing Request の作成を同時に行うことになる。
ここで -des3 を指定していると Triple DES 用のパスワードを要求されるが、これを指定しなければパスワードを入力する必要は無い。ただし key のセキュリティレベルは当然下がる。
ただし、逆にパスワードを指定すると apache 再起動時に毎回パスワードを要求される。
一度作成したキーからパスワードを取り除くには以下のコマンドを実行する。
$ openssl rsa -in server.key -out server.pem
次にサーバキーを使って認証局に申請するファイルを作成する。
$ openssl req -new -key server.key -out server.csr
このファイルを verisign などの会社に申請する際に送付する。
とりあえず今回はテスト用のが一個欲しいだけなので、自分の鍵で認証して生成する。当然ブラウザではエラーが出るので注意。
$ openssl x509 -req -days 60 -in server.csr -signkey server.key -out server.crt
Generating an SSL Certificate with Apache+mod_ssl