Logo address

HTTPS によるサービス

目次

HTTPS によるサービスを行う場合には証明書(certificate)を作成する必要がある。これについては 別ページで解説済なので省略する。
さて factotum へのパッチ充てとカーネルの再コンパイルが完了し、 cert.pemkey.pem が準備されたとして、そこから話を進めよう。

鍵の置き場所

これらを Plan9 のサーバに /sys/lib/tls にコピーする。アクセスモードは、
	--r--r--r-- M 8 bootes sys 1249 Jul 29 18:42 cert.pem
	--r-------- M 8 bootes sys  887 Jul 29 18:42 key.pem
である。(セキュリティの事を考えると、本当は key.pem は認証サーバの secstore に置くべであろう。/sys/lib は CGI のアクセス空間の中に入っている事に注意すべきである。CPU サーバに置くとしても、CGI のアクセス空間の外が良いと思われる。他方では鍵管理のためには cert.pemkey.pem は同じ場所に置く方がよいとも思える。これらはどこにでも置く事ができるのだ。)

Factotum へ key.pem を登録

factotom に key.pem を登録する。この内容は次のようなものである。(途中が省略されている)
	-----BEGIN RSA PRIVATE KEY-----
	MIICXAIBAAKBgQC3e6fc5JGqId3EB6bG5bW0n/nxm+Hl/cqZ10auwGkoUIPSGt70
	36biOH74tkKnqVmfK+IsahG+s1qRcSJzA6qW+l7yYghOu5EFRPA5tf1gj2yAUmsP
	.....
	.....
	p1bb+XDjBL3CcrWbzo7tAje7Zcl+r9q+RSOUKhJ4MP0=
	-----END RSA PRIVATE KEY-----
この形式は factotum が扱う形式ではない。auth/secretpem が形式変換をしてくれる。
	cpu% auth/secretpem /sys/lib/tls/key.pem > /mnt/factotum/ctl
注意: factotum へのパッチ、またそれに基づくカーネルの変更を忘れるな。

Pegasus の起動

Pegasus で HTTPS のサービスを行うにはユーザ web になって
	/usr/local/bin/386/httpd -us -p443 -c/sys/lib/tls/cert.pem
を実行すればよいのであるが、Pegasus の配布に含まれる mon を使用するとユーザ bootes から
	mon -du web -p passwordfile /usr/local/bin/386/httpd -suM -p443 -c/sys/lib/tls/cert.pem
ここに passwordfile はユーザ web になるに必要なパスワードが含まれているファイルである。

/rc/bin/cpurc

筆者のものを紹介する
	auth/secretpem /usr/bootes/private/key.pem > /mnt/factotum/ctl
	a=/usr/local/bin/$cputype
	c=/sys/lib/tls/cert.pem
	p=/usr/web/lib/passwd
	$a/mon -du web -p $p $a/httpd -suM
	$a/mon -du web -p $p $a/httpd -suM -p443 -c $c
筆者はまだパスワード関係のファイルの置き場所に関する一貫した方針を持っていない。(そんな事をやっていれば、そのうち失敗するであろう)
どこかで集中管理するのが良いと考えているが…

現在稼働実験中

Pegasus の HTTPS は 8月29日より稼働実験中である。
-:
	https://plan9.aichi-u.ac.jp
+:
にアクセスして確認できる。
ブラウザは「証明書(certificate)」に対してクレームをつけるが、気にしないで…