« ディスクブートにしたが | トップページ | なんとかEtch化 »

2007年6月 5日 (火)

SWATをSSL化するネタ

 ちょっと寄り道して、Samba 3.0のSWATをSSL化するネタを公開してみる。ちなみに内部を LinkStation/玄箱 をハックしようの著者が製作されたハックキット 2.0alphaを使って、Vine Linux 3.1相当にしてある。

SWAT自体はinetdなんかのスーパーサーバを使うことが前提になっているので、daemontoolstcpserver(ucspi-tcp)+SSLパッチを使うことにする。で、それぞれをダウンロード。

 daemontoolsとucspi-tcp(djb謹製アプリケーションはほぼすべてらしい)には、glibcのバージョンが2.3.1以上だと正常にコンパイルできないという不具合(というべきだろう)があるため、ucspi-tcp-0.88.errno.patchdaemontools-0.76.errno.patch もダウンロードしておいた。それぞれにパッチを当て、コンパイル開始。

 daemontoolsは正常終了。起動も問題なし。で、ucspi-tcpなのだが、tcpserver SSL/TLS patchにはすでにerrnoのパッチが取り込まれていたので、SSLパッチだけ当ててmake。...ってエラーを吐いてとまる。パッチなしの状態だとmakeが普通に通るので、「もしかして?」ということでSSLパッチを当てた後、errnoパッチをリバースパッチとして当ててみた。すると正常終了。make setup checkも問題なし。なんだかなぁ。

 ucspi-tcp-0.88のディレクトリでmake certを実行して、SSLのサーバ証明書を生成する。ファイル名はcert.pemになってしまうが、別に問題はなかろう。

 このcert.pemをdaemontoolsのswat サービスディレクトリにコピーして、runを書く。こんな感じ。

  #!/bin/sh

  SAMBA_PREFIX=/usr/local/samba
  PATH=$PATH:$SAMBA_PREFIX/sbin:/$SAMBA_PREFIX/bin
  export PATH

  # tcpserver(8) environment
  # ACL ectry file
  ACLS=/usr/local/etc/acls/default.cdb
  # run as this user
  USER=root
  # my linstening address or host
  HOST=0
  # my linstening port or service name
  PORT=10901
  # run this program
  PROG=swat

  exec 2>&1
  exec tcpserver -vRHl0 -s -n ./cert.pem -x $ACLS \
      -u `id -u $USER` -g `id -g $USER` \
      $HOST $PORT $PROG

 自己証明書なので証明書を無条件で受け入れてくれないのだが、https://{玄箱のIPアドレス}:10901/で、ちゃんとSSL化された。これで野良にしても大丈夫...か?

|

« ディスクブートにしたが | トップページ | なんとかEtch化 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/164672/15324908

この記事へのトラックバック一覧です: SWATをSSL化するネタ:

« ディスクブートにしたが | トップページ | なんとかEtch化 »