正当性云々を抜きにして単純に自分用サーバをSSL対応させる方法のメモ。
事情あって今回はWindows上でApacheを動かしているので、手順の中にはもしかしたらWindowsに依存する部分があるかもしれない。
手順概要は
- 必要なソフトを入れる
- 証明書の作成
- Apacheの設定
手順の意味の簡単な説明
SSLを使うにはサーバが正当であるという証明書と、データ暗号化のための鍵が必要だ。それらのファイルを作成するためにOpenSSLを使う。実際の世の中では証明書リクエストをVeriSignなどの会社に申請し、お金を払って証明書をもらうのだが、今は勝手に自分でVeriSignみたいな役割もしてしまう。
必要なソフト
バージョンは2007/11/11現在の最新版。インストールは適当に。
OpenSSL 0.9.8g
証明書の作成用。公式サイトにはソースしかないが、有志がWindowsバイナリを公開している。
Shining Light Productions – Win32 OpenSSL
ActivePerl 5.8.8
OpenSSLを使う上で必要。既にPerlが動くなら入れなくていい。
このページにはなにやら値段が書いてあるがDLは無料。
ActiveState – Store – ActivePerl
証明書作成(1)サーバ用秘密鍵作成
C:OpenSSLにインストールしたとして
C:OpenSSLbin> openssl genrsa -out server.key 1024 Loading 'screen' into random state - done Generating RSA private key, 1024 bit long modulus ..................++++++ ............++++++ e is 65537 (0x10001)
これでbinフォルダにserver.keyが出力される。
証明書作成(2)証明書リクエスト作成
C:OpenSSLbin>openssl req -new -key server.key -out server.csr
リクエスト作成のために情報を入れてもらいます、と言われ、いくつかの入力をさせられる。基本的には適当に入れていけばいいが、
CommonNameにはサーバがアクセスされるホスト名を正確に入力。
Challenge passwordでは何も入力せずにEnter。
Optional company nameにも何も入力せずにEnter。
今回はこんな感じ。
Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Kyoto Locality Name (eg, city) []:Kyoto Organization Name (eg, company) [Internet Widgits Pty Ltd]:Oddwit Organizational Unit Name (eg, section) []:Oddwit Common Name (eg, YOUR name) []:www.oddwit.com Email Address []:info@oddwit.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
これでbinフォルダにserver.csrが作成される。
証明書作成(3)証明書作成
C:OpenSSLbin> openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650 Loading 'screen' into random state - done Signature ok subject=/C=JP/ST=Kyoto/L=Kyoto/O=Unikaji/OU=Unikaji/CN=202.11.205.142/emailAddress=info@uni-kaji.com Getting Private key
-days 3650は証明書の有効期限。別に短くしておく必要はないので10年とかでいい。
これでbinフォルダにserver.crtが作成される。
Apacheの設定
server.crtとserver.keyをApacheのconfcertsに移動。
confssl.confに以下を書き込む(ない場合は近くにあるサンプルファイルをコピーして作成)。
SSLCertificateFile conf/certs/server.crt SSLCertificateKeyFile conf/certs/server.key
その下にDocumentRootなどの設定をするところがあるが、そこはhttpd.confの設定に応じて設定する。
Apacheを再起動して作業は完了だ。
その他もろもろ
SSLはデフォルトでポート443を使うので、ファイアウォールに穴を穿っておくこと。
これでhttps://…にアクセスできるはずだ。ブラウザに証明書がズルいとかヤバいとかがちゃがちゃと文句を言われるが華麗にスルーしてあげよう。
参考にしたサイトは主にこのあたり。
Apache + SSL
OpenSSL for Windows
OpenSSLのインストール
SSL用証明書の作成(Windows編)