トップ «前の日(02-18) 最新 次の日(02-20)» 追記

Masa's blog

検索キーワード:

2009年02月19日 delegated STLS=mitm HTTPCONF による https通信におけるhttpヘッダー書き換え

_ delegated STLS=mitm HTTPCONF による https通信におけるhttpヘッダー書き換え

仕組み

  • 通常、https(SSL)通信の内容は書き換える事は(当然)出来ない。
  • そこで、ブラウザに対してはwebサーバのフリをし、webサーバに対してはブラウザのフリをする事が可能なプロキシサーバ(delegate)を導入し、SSL通信をプロキシ上で一旦平分に復号化し、ヘッダーを書き換えた後に再度SLL通信に戻す。
 [browser]---[delegated:8080]---(Internet)---[server]

         |-+-|......+.......|<------+------->|
           |        |               |
           |        |           [server]の証明書によるSSL通信
           |        |
           |   [delegated]内部では通信が復号(平文)化されている
           |
         [delegated]の証明書によるSSL通信

delegate-9.8.5(プロキシサーバ)のインストール

現時点での最新版はdelegate-9.9.1であるが、https通信に割り込む機能(mitm : Man In The Middle 機能)がdelegate-9.8.6以降ではバイナリ形式のみでの提供となっている為、あえて古いdelegate-9.8.5を使うものとする。よって、旧バージョンを使う上でのリスクは常に意識しておく必要がある。

なお、有償のライセンス契約(!)を結ぶとmitm機能を含んだ最新版のソースが提供されるとの事。

サーバ証明書、秘密鍵の作成

https通信に割り込むために、本来はwebサーバからブラウザに送られるサーバ証明書をdelegateがwebサーバに成りすまして送る必要が有る。そのための偽りのサーバ証明書を作成する必要が有る。

  • cd /var/spool/delegate-nobody/
  • mkdir lib
  • chown nobody.nobody lib
  • cd lib
  • 秘密鍵(server-key.pem)の作成(RSA 2048bit)
openssl genrsa -out server-key.pem 2048
  • サーバ証明書(server-cert.pem)の作成(有効期限 20年)
openssl req -x509 -new -key server-key.pem -out server-cert.pem -days 7300
  • chown nobody.nobody server-key.pem server-cert.pem
  • chmod 600 server-key.pem server-cert.pem

delegatedの起動

下記の例ではUser-Agentを`Fake Browser on CP/M-80'に書き換えている。

/usr/local/bin/delegated \
    -P8080 \
    ADMIN=root@myh.no-ip.org \
    SERVER=http \
    PERMIT="*:*:127.0.0.1,192.168.0.0/255.255.255.0" \
    RESOLV=cache,file,dns,sys \
    STLS=mitm \
    HTTPCONF="kill-qhead:User-Agent" \
    HTTPCONF="add-qhead:User-Agent:Fake Browser on CP/M-80"
    LOGFILE=

制限事項

ブラウザ側で受け取るサーバ証明書が本来のサーバから送られる物と異なるため警告ダイアログが出る。

謝辞

delegate作者の佐藤豊 様(通商産業省 工業技術院 電子技術総合研究所 情報 アーキテクチャ部)にはメールによる質問に快くご回答いただきました。感謝いたします。


2012年02月19日 ARMedslack-13.37 on zaurus(SL-C760) あぼーん4

_ ARMedslack-13.37 on zaurus(SL-C760) あぼーん4

どこかのページで見たままに、以下のような設定をしていたのを思い出した。

echo deadline >/sys/block/mmcblk0/queue/scheduler

再度調べてみると、SSDやSD等のメモリーベースの媒体では上記の設定はあまり意味が無く、むしろ色々と手をこまねくより、何もしない(?)

echo noop >/sys/block/mmcblk0/queue/scheduler

の方がいいらしい。

で上記の設定にして試したところ、ビルドが少し進んで別のエラーがでた。

Error: selected processor does not support `blx ...'

アセンブラ(as)でエラーを吐いている。

.mozconfigを以下のように設定したところ、

. $topsrcdir/browser/config/mozconfig
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --enable-default-toolkit=cairo-gtk2
CFLAGS="-march=armv4t"
CXXFLAGS="-march=armv4t"
ASFLAGS="-march=armv4t"

やはりasがIllegal Instructionを吐くようになって、あぼーん (--;。