2008-08-13

OpenSSLでCSRの生成方法(SSLサーバー証明書)

自分用メモメモ。

root権限にして
# su - root

openssl コマンドが使えるか確認するのだ
# openssl version

confのディレクトリに移動
# cd /etc/httpd/conf/

まず鍵を作成するよ。
鍵は更新のときのことも考えて年度つきにしておくといいかもですよ。
# mkdir ssl.key
# genrsa -des3 -out ./ssl.key/ssl.sample.jp.2008.key 1024
パスワード聞かれるので、パスワードを自分で考えて入力する。
このパスフレーズは後で使うので必ずメモしておく。

次にcsr作成。
# mkdir ssl.csr
# openssl req -new -key ./ssl.key/ssl.sample.jp.2008.key -out ./ssl.csr/ssl.sample.jp.2008.csr
1014 ll ssl.csr
作成するときに、パスフレーズ聞かれます。

次に必要事項を入力する。ドメインの登録情報に合わせておくこと。
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Shibuya-ku
Organization Name (eg, company) [My Company Ltd]:SAMPLE K.K.
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:sample.jp
Email Address []:support@sample.jp
KEYにパスフレーズを設定しておくと安全なんだけど、apache再起動するたびにパスフレーズきかれていやんっていうひとは、パスフレーズなしで作成することもできます。
# genrsa -out ./ssl.key/ssl.sample.jp.2008.key 1024
※ -des3 を除くとパスフレーズが作られない。

あとからパスフレーズを削除したい場合は
# cp ./ssl.key/ssl.sample.jp.2008.key ./ssl.key/ssl.sample.jp.2008.key.org # backup
# openssl rsa -in ./ssl.key/ssl.sample.jp.2008.key -out ./ssl.key/ssl.sample.jp.2008.key
ってやれば削除できます。

でもセキュリティ上、パスフレーズは設定しておいたほうがいいよ。なのでやり方書いておくけどお勧めはしません。

それからパスフレーズを自動で入力することもできるよ。これもあんまりおすすめじゃないけどね。
安全な場所に
# vi ssl_startup.sh
で中身が
#!/bin/sh
echo "Password-phrase"
な感じのファイルを作る。
権限変えておく
# chmod 777 ssl_startup.sh
そんでhttpd.confに
<ifmodule>
 SSLRandomSeed startup builtin
 SSLRandomSeed connect builtin
 SSLPassPhraseDialog exec:スクリプトまでの絶対パス/ssl_startup.sh ←この行を追加する
</ifmodule>


2008.08.20 追記
パスフレーズを鍵に埋め込んでおくこともできるらしい。
# cd /usr/local/apache/conf/ssl.key/
# openssl rsa < server.key > server.key.out
read RSA key
Enter PEM pass phrase: (パスフレーズを入力)
writing RSA key
# mv server.key server.key.org
# mv server.key.out server.key
くどいようですがセキュリティ的にはお勧めではないです。

[参考リンク]

webプログラマーのメモ » CSRの生成方法 Apache2 OpenSSL

Apacheでの、パスフレーズ入力なしでの起動方法。|SSLサーバ証明書ならグローバルサイン

[neko::blog: Apache+mod_sslでHTTPS通信を実現する]

- 株式会社エスロジカル - 技術ドキュメント OpenSSL:mod_sslサーバー証明鍵にパスフレーズを埋め込む