開発テスト用にSSL証明書を使いたいけどmod_sslに付属されてなかった、もしくは付属していたのを紛失した場合に自分で証明書を作る手順です。
# OpenSSLインストール yum install openssl # 設定ファイルをちょっとだけ変える /bin/cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.bak /bin/sed -i 's/^basicConstraints=CA:.*$/basicConstraints=CA:true/' /etc/pki/tls/openssl.cnf # 自己認証局(CA)を作るためのスクリプトを実行する。 cd /etc/pki/tls/misc/ ./CA -newca # 自己認証局の情報を入力していく # 設定ファイルをもとに戻す /bin/cp /etc/pki/tls/openssl.cnf.bak /etc/pki/tls/openssl.cnf # クライアント側でインストールするために認証局用の証明書をコピーしておく cp ../../CA/cacert.pem ~/root.ca.crt # Webサーバー側で作成したCSRをもとにサーバー証明書を発行(要パスワード) openssl ca -in ~/yourdomain.csr -out ~/yourdomain.crt # Tomcatで証明書を使う場合はx509 DER形式に変換 openssl x509 -inform pem -in ~/root.ca.crt -outform der -out ~/root.ca.der openssl x509 -inform pem -in ~/yourdomain.crt -outform der -out ~/yourdomain.der
(追記:1) 自己認証局の作成に失敗して「./CA -newca」をやり直したいときは「/etc/pki/CA」ディレクトリを削除するとうまくいきます。
(追記:2) サーバー証明書の発行のときにCSRと認証局の都市名が違うと「The stateOrProvinceName field needed to be the same」というようなエラーがでます。 CSR作り直してやり直してみても
The stateOrProvinceName field needed to be the same in the CA certificate (Tokyo) and the request (Tokyo)
というような理不尽なエラーがでる場合はオプション「-policy policy_anything」をつけて
openssl ca -policy policy_anything -in ~/yourdomain.csr -out ~/yourdomain.crt
としてやると回避できます。