Oddwit


Windows上のApacheでオレオレSSLするメモ

Posted in WEB by マルコ on the November 11th, 2007

正当性云々を抜きにして単純に自分用サーバをSSL対応させる方法のメモ。

事情あって今回はWindows上でApacheを動かしているので、手順の中にはもしかしたらWindowsに依存する部分があるかもしれない。

手順概要は

  1. 必要なソフトを入れる
  2. 証明書の作成
  3. 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:\OpenSSL\bin> 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:\OpenSSL\bin>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:\OpenSSL\bin> 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のconf\certsに移動。
conf\ssl.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編)

Leave a Reply