Delegate で Proxy 認証を試したときのメモ
ユーザー名とパスワードの対をファイルに保存。hostname のところは適当な名前で大丈夫だと思う。
# ./delegated -P8080 -Fauth -a user:pass -hostname
Delegate 起動。先ほど入力した hostname を AUTHORIZER として使う。
# ./delegated -P8080 ADMIN=webmaster@www.redout.net SERVER=http AUTH=proxy:pauth PERMIT="*:*:*" AUTHORIZER=-hostname
# ./delegated -P8080 ADMIN=webmaster@www.redout.net SERVER=http AUTH=proxy:pauth PERMIT="*:*:*" AUTHORIZER=-list{user:pass}
-P8080 | 8080 番ポートで動かす |
---|---|
SERVER=http | HTTP プロキシーとして動かす |
AUTH=proxy:pauth | HTTP プロキシーサーバーとして Delegate を動かすときの認証方法を指定。 pauth は Proxy-Authorization フィールドを使う指定。 |
PERMIT="*:*:*" | アクセス制限はしない。PERMIT をつけないと AUTH=proxy:pauth が無効になるので注意。 |
AUTHORIZER=-list{user:pass} | 認証に使うユーザー名(user)とパスワード(pass)のペア。 |
ブラウザーのリクエスト サーバーのレスポンス
GET http://www.redout.net/ HTTP/1.1
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)
Host: www.redout.net
Proxy-Connection: Keep-Alive
HTTP/1.1 407 Proxy Authentication Required
Date: Wed, 02 Nov 2005 02:48:03 GMT
Server: DeleGate/8.9.6
Delegate-Ver: 8.9.6 (delay=0)
MIME-Version: 1.0
Content-Type: text/html
Content-Length: 100
Proxy-Connection: close
Proxy-Authenticate: Basic Realm="proxy"
Not Authorized: GET http://www.redout.net/ HTTP/1.1
<BR>
<B>Proxy Authorization</B> required.<P>
GET http://www.redout.net/ HTTP/1.1
Accept: */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)
Host: www.redout.net
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic dGVzdDp0ZXN0
HTTP/1.1 200 OK
Delegate-Ver: 8.9.6 (delay=0)
Date: Wed, 02 Nov 2005 02:56:46 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7e PHP/4.3.11
Last-Modified: Fri 20 May 2005 23:17:30 GMT
ETag: "3c01fa-387-428e700a"
Accept-Ranges: bytes
Content-Type: text/html; charset=shift_jis
Via: 1.1 - (DeleGate/8.9.6)
Proxy-Connection: Keep-alive, timeout=50, maxreq=60
Content-Length: 903
......(BODY)
ユーザー名とパスワードの対を暗号化してファイルに保存する。暗号化のためのキーワードを入力する必要がある。
# ./delegated -Fauth -a user:pass -dgauth
**** Specify the key of encryption for 'dgauth'
**** CRYPT=pass:keyword
Delegate 起動する。キーワードを聞かれるので先ほど入力したものを入れる。
# ./delegate -P8080 ADMIN=webmaster@www.redout.net SERVER=http AUTH=proxy:pauth PERMIT="*:*:*" AUTHORIZER=-dgauth
**** Specify the key of encryption for 'dgauth'
**** CRYPT=pass:keyword
ブラウザーのリクエスト サーバーのレスポンス
GET http://www.redout.net/ HTTP/1.1
Host: www.redout.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
HTTP/1.1 407 Proxy Authentication Required
Date: Wed, 02 Nov 2005 02:48:03 GMT
Server: DeleGate/8.11.5
Delegate-Ver: 8.11.5 (delay=0)
MIME-Version: 1.0
Content-Type: text/html
Content-Length: 100
Proxy-Connection: keep-alive, timeout=50, maxreq=60
Proxy-Authenticate: Digest Realm="-", nonce="NzEuYWRkMjg2MzQuYjEwOWVjNmU4MTBhNTA0M2YyZTFhNGFlOGEyY2VmMzg=", opaque="003DCADF8C43A0D15FC4EFE530D114CE", qop="auth"
Not Authorized: GET http://www.redout.net/ HTTP/1.1
<BR>
<B>Proxy Authorization</B> required.<P>
GET http://www.redout.net/ HTTP/1.1
Host: www.redout.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Proxy-Authorization: Digest username="user", realm="-", nonce="NzEuYWRkMjg2MzQuYjEwOWVjNmU4MTBhNTA0M2YyZTFhNGFlOGEyY2VmMzg=", uri="/", response="484f0fdf67cd9ac492566f56c5102b2d" opaque="003DCADF8C43A0D15FC4EFE530D114CE", qop=auth, nc=00000001, cnonce="145a7df2f8cebe62f381a5af4b9c2b66"
HTTP/1.1 200 OK
Delegate-Ver: 8.11.5 (delay=0)
Date: Wed, 02 Nov 2005 02:56:46 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7e PHP/4.3.11
Last-Modified: Fri 20 May 2005 23:17:30 GMT
ETag: "3c01fa-387-428e700a"
Accept-Ranges: bytes
Content-Type: text/html; charset=shift_jis
Via: 1.1 - (DeleGate/8.11.5)
Proxy-Connection: keep-alive, timeout=50, maxreq=60
Content-Length: 903
......(BODY)
いまいち dgauth の使い方がわからなかったが、Ethereal でパケットを見たところ Digest 認証にはなっていた。