Home > 2010年02月19日

2010年02月19日

mod_websocket for lighttpdをMacで動かしてみる3(ssl,wss)

うちのOS X10.6でも無事動いたmod_websocketですが、
証明書の設定が面倒でwss(SSL)を試してみませんでした。

実際始めてしまえばそんなに面倒じゃないんですが、
やるまでがね…。

ってわけで、手順を残しておきますので、ご自由にどうぞ。

なお、参考にしたのは以下のサイトです。
Webサーバ「lighttpd」でSSLを使うには − @IT
今日も明日もググったー: lighttpd ssl
Rails + lighttpd + SSL - プログラマ 福重 伸太朗 〜基本へ帰ろう〜

作業ディレクトリへ

cd lighty/lighttpd-1.4.26

lighttpdをSSL ONでコンパイルし直し

./configure --prefix=/Users/t/lighty/ --with-openssl (network-opensslがenableの方に表示されればOK) make make install cd ..

lighttpdの設定

vi etc/lighttpd/lighttpd.conf $SERVER["socket"] == ":8443" { ssl.engine = "enable" ssl.pemfile = "/Users/t/lighty/etc/lighttpd/ssl/server.pem" } :wq ※ ここではサボってますが、広く公開する場合等(っていうか原則)は、  ドキュメントルートを分けましょう。

オレオレ証明書の作成

mkdir etc/lighttpd/ssl/ openssl req -new -x509 -keyout server.pem -out server.pem Generating a 1024 bit RSA private key .........++++++ .............................++++++ writing new private key to 'server.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: Verify failure Enter PEM pass phrase:**** Verifying - Enter PEM pass phrase:**** ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Tokyo Locality Name (eg, city) []:Koto Organization Name (eg, company) [Internet Widgits Pty Ltd]:Born Neet Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:localhost Email Address []: ls server.pem cd ~/lighty

起動

lighttpd -f etc/lighttpd/lighttpd.conf Enter PEM pass phrase: ****

HTTPSのテスト(ブラウザから)

https://localhost:8443/ test (証明書の警告は無視)

チャットサンプル(wss版)の準備

cp -p srv/www/htdocs/ws_chat.html srv/www/htdocs/wss_chat.html vi srv/www/htdocs/wss_chat.html var ws = new WebSocket("wss://127.0.0.1:8443/chat"); :wq

chatサーバの起動

mod_websocket/src/sample/ws_chat 9001 ポップアップが出るので許可する

Chatのテスト(Chromeから)

http://localhost:8080/wss_chat.html https://localhost:8443/wss_chat.html (wss通信だけじゃなくwss_chat.html取得の通信も暗号化すべき) 動いた!!

ん…wssってこれでいいんだっけ?

何か間違ってる気がするので突っ込みに期待…
…じゃなく後で勉強しとこう。

nori2048さんに早速突っ込みをいただきました。(2010/2/20 00:10)
コメント欄も合わせてご覧下さい。
(記事にも追記しています。)

PR

mod_websocket for lighttpdをMacで動かしてみる2(無事成功!)

先日失敗したmod_websocket on snow leopardですが、
作者のnori0428さんが早くも修正版をリリースしてくださいました。

動かないと文句を付けた手前、早く試してみないと…と思ってたんですが、
今週は忙しくて週末になってしまいました。
というわけで、リベンジです。
(僕は何もしてませんが)

結果は…
…無事、動きました!!

Mac OS 10.6の人は以下の手順で使えると思いますよー。
(wssはスルーしてますが)

作業ディレクトリ

mdkir lighty cd lighty

mod_websocketのダウンロード

git clone git://github.com/nori0428/mod_websocket.git

lighttpdのダウンロード

curl -O http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.26.tar.gz

とりあえず、makeに必須のライブラリをインストール

sudo port install autoconf sudo port install Automake sudo port install pcre zlibとbzip2はデフォルトで入ってるっぽい。

そしてmod_websocketへ

tar xf lighttpd-1.4.26.tar.gz cd lighttpd-1.4.26

パッチ当て

patch -p1 < ../mod_websocket/src/mod_websocket.patch cp ../mod_websocket/src/mod_websocket.c src/

ホームディレクトリ内にインストール

./autogen.sh ./configure --prefix=/Users/t/lighty/ make make install

確認(ファイルがあればOK)

ls -l ../lib/mod_websocket.* -rwxr-xr-x 1 t staff 1022 2 19 01:58 ../lib/mod_websocket.la -rwxr-xr-x 1 t staff 26016 2 19 01:58 ../lib/mod_websocket.so

パス追加

vi ~/.profile export PATH=/Users/t/lighty/sbin:$PATH :wq source ~/.profile

lighttpdの設定

mkdir -p ../etc/lighttpd cp -p doc/lighttpd.conf ../etc/lighttpd/ cd .. vi etc/lighttpd/lighttpd.conf server.modules = ( "mod_websocket", server.port = 8080 server.document-root = "/Users/t/lighty/srv/www/htdocs/" server.errorlog = "/Users/t/lighty/var/log/lighttpd/error.log" accesslog.filename = "/Users/t/lighty/var/log/lighttpd/access.log" websocket.server = ( "/echo" => ( "host" => "127.0.0.1", "port" => 9000 ), "/chat" => ( "host" => "127.0.0.1", "port" => 9001 ) ) :wq

ディスクトリとテストコンテンツの作成

mkdir -p srv/www/htdocs mkdir -p var/log/lighttpd mkdir -p var/run/lighttpd echo test > srv/www/htdocs/index.html

起動(confファイルを指定しないと何かエラーになる)

lighttpd -t -f etc/lighttpd/lighttpd.conf Syntax OK lighttpd -f etc/lighttpd/lighttpd.conf

Webサーバのテスト(ブラウザから)

http://localhost:8080/ test

チャットサンプルの準備

cp mod_websocket/html/ws_chat.html srv/www/htdocs/ vi srv/www/htdocs/ws_chat.html var ws = new WebSocket("ws://127.0.0.1:8080/chat"); :wq

libevent(ソースからインストールし直さないとダメっぽい)

sudo port uninstall libevent curl -O http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz tar xf libevent-1.4.13-stable.tar.gz cd libevent-1.4.13-stable make sudo make install

サンプルのmake

cd .. cd mod_websocket/src/sample make

chatサーバの起動

cd ~/lighty mod_websocket/src/sample/ws_chat 9001 ポップアップが出るので 「許可」

Chatのテスト(Chromeから)

http://localhost:8080/ws_chat.html 動いた!!

wss(ssl)を有効化するのと、自分でサンプル作ってみるのが宿題。
あと、ソースも読んでみないと。

よーし、弄り倒すぞー。

Home > 2010年02月19日

Search
Loading
Feeds
Links
スポンサードリンク

Page Top