tcpserver SSL/TLS patch の入手。
mikan# cd /usr/local/src
mikan# lynx http://www.nrg4u.com/
上記サイト内より、ucspi-tcp-ssl-20020705.patch.gz を落としてくる。(tcpserver にあてる SSL 対応用パッチ)
mikan# ls -la ucspi*
-rw-r--r-- 1 root wheel 53019 Nov 29 2002 ucspi-tcp-0.88.tar.gz
-rw-r--r-- 1 root wheel 3084 Mar 28 09:33 ucspi-tcp-ssl-20020705.patch.gz
mikan# tar xvfz ucspi-tcp-0.88.tar.gz
ucspi-tcp-0.88
ucspi-tcp-0.88/README
ucspi-tcp-0.88/TODO
<略>
ucspi-tcp-0.88/warn-auto.sh
ucspi-tcp-0.88/warn-shsgr
ucspi-tcp-0.88/x86cpuid.c
SSL のパッチをあてる
mikan# cd ucspi-tcp-0.88
mikan# zcat ../ucspi-tcp-ssl-20020705.patch.gz | patch
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: Makefile
|===================================================================
|RCS file: /usr/home/cvs-qmail-ldap/CVS/ucspi-tcp/Makefile,v
|retrieving revision 1.1.1.1
|retrieving revision 1.2
|diff -u -r1.1.1.1 -r1.2
|--- Makefile 14 Jun 2002 08:47:30 -0000 1.1.1.1
|+++ Makefile 17 Jun 2002 12:53:14 -0000 1.2
--------------------------
Patching file Makefile using Plan A...
Hunk #1 succeeded at 1.
Hunk #2 succeeded at 159.
Hunk #3 succeeded at 757.
Hunk #4 succeeded at 766.
Hunk #5 succeeded at 847.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: tcpserver.c
|===================================================================
|RCS file: /usr/home/cvs-qmail-ldap/CVS/ucspi-tcp/tcpserver.c,v
|retrieving revision 1.1.1.1
|retrieving revision 1.4
|diff -u -r1.1.1.1 -r1.4
|--- tcpserver.c 14 Jun 2002 08:47:30 -0000 1.1.1.1
|+++ tcpserver.c 19 Jun 2002 12:33:26 -0000 1.4
--------------------------
Patching file tcpserver.c using Plan A...
Hunk #1 succeeded at 1.
Hunk #2 succeeded at 37.
Hunk #3 succeeded at 246.
Hunk #4 succeeded at 259.
Hunk #5 succeeded at 323.
Hunk #6 succeeded at 363.
Hunk #7 succeeded at 410.
Hunk #8 succeeded at 473.
Hunk #9 succeeded at 515.
done
無事パッチがあたったので make する。(インストールは make setup を実行せず、手動でファイルをコピーする。)
mikan# make
( cat warn-auto.sh; echo 'main="$1"; shift'; echo exec "`head -1 conf-ld`" '-o "$main" "$main".o ${1+"$@"}' ) > load
chmod 755 load
( cat warn-auto.sh; echo exec "`head -1 conf-cc`" '-c ${1+"$@"}' ) > compile
<略>
./load install hier.o auto_home.o unix.a byte.a
./compile instcheck.c
./load instcheck hier.o auto_home.o unix.a byte.a
mikan# cp tcpserver /usr/local/bin/tcpserver-ssl
mikan# ls -la /usr/local/bin/tcpserver*
-rwxr-xr-x 1 root wheel 40116 Mar 28 13:18 /usr/local/bin/tcpserver
-rwxr-xr-x 1 root wheel 43220 Mar 28 19:29 /usr/local/bin/tcpserver-ssl
秘密鍵と 認証申請書(CSR ファイル)を作成する。
mikan# sh
# PEM1=/tmp/openssl.`date +%s`.$$.1
# PEM2=/tmp/openssl.`date +%s`.$$.2
# cd /var/qmail
# openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2
Generating a 1024 bit RSA private key
.................................++++++
.......++++++
writing new private key to '/tmp/openssl.1080470029.23060.1'
-----
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]:Hiroshima
Locality Name (eg, city) []:Hiroshima-shi
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Vaginus
Organizational Unit Name (eg, section) []:Hiroshima Center
Common Name (eg, YOUR name) []:mx.fureai-ichiba.com
Email Address []:
tcpserver-ssl では、秘密鍵と Certificate(電子証明書)を一つのファイルで管理する(間に空白行を一つ空けて。Apache-SSL 等だと、秘密鍵と証明書は別のファイルで管理する)。
今回は、第三者認証をしたり、自分で CA 局を立ち上げたりはしないので、証明申請書(CSR ファイル)のままで証明書代わりとする。
正規に、ベリサインなどで電子証明書を取った場合も、以下と同じように秘密鍵の後に認証機関から返ってきた証明書を一行空けて続けてセットすればいい。
# cat $PEM1 > cert.pem
# echo "" >> cert.pem
# cat $PEM2 >> cert.pem
# rm -f $PEM1 $PEM2
# chmod 600 cert.pem
# exit
APOP 認証にも対応したパスワード認証プログラム checkpw をインストールする。
(今回は APOP は行わない(qmail にパッチをあてないといけないし。それに、どうせ SSL 通信するんだから必要ないっしょ?違う?)。とは言っても、ま、今後(?)のために・・・ということで checkpw をインストール)
このサイトからリンクを辿り、checkpw-1.01.tar.gz をダウンロード。
↓
http://heanet.dl.sourceforge.net/sourceforge/checkpw/checkpw-1.01.tar.gz
mikan# cd /usr/local/src
mikan# lynx http://prdownloads.sourceforge.net/checkpw/
mikan# ls -la checkpw*
-rw-r--r-- 1 root wheel 28498 Mar 28 20:20 checkpw-1.01.tar.gz
mikan# tar xvfz checkpw-1.01.tar.gz
checkpw-1.01/
checkpw-1.01/auto_patrn.h
checkpw-1.01/conf-cc
<略>
checkpw-1.01/loginlog=s
checkpw-1.01/str_len.c
checkpw-1.01/CHANGES
mikan# cd checkpw-1.01
mikan# make
( cat warn-auto.sh; echo 'main="$1"; shift'; echo exec "`head -1 conf-ld`" '-o "$main" "$main".o ${1+"$@"}' ) > load
chmod 755 load
( cat warn-auto.sh; echo exec "`head -1 conf-cc`" '-c ${1+"$@"}' ) > compile
chmod 755 compile
<略>
./load install hier.o auto_home.o unix.a byte.a
./compile instcheck.c
./load instcheck hier.o auto_home.o unix.a byte.a
mikan# make setup check
./install
./instcheck
mikan# ls -la /bin/check*
-rwx------ 1 root wheel 11828 Mar 28 21:35 /bin/checkapoppw
-rwx------ 1 root wheel 7964 Mar 28 15:23 /bin/checkpassword
-rwx------ 1 root wheel 9048 Mar 28 21:35 /bin/checkpw
パスワードファイルを作成する。(Maildir ディレクトリ以下に .password という名前で。平文なので、他人に見られないようファイルの権限をきちんと設定すること。)
mikan# cat > ~shinoda/Maildir/.password
hogehoge
^D
mikan# chown shinoda ~shinoda/Maildir/.password
mikan# chmod 600 ~shinoda/Maildir/.password
over SSL 対応版 qmail 用起動スクリプト作成し、起動する。
(SMTP over SSL は 465番ポートで、POP over SSL は 995番ポートを開けて起動する)
mikan# cp /var/qmail/rc /var/qmail/rc-ssl
mikan# vi /var/qmail/rc-ssl
#!/bin/sh
PATH="/var/qmail/bin:$PATH"
/usr/local/bin/tcpserver-ssl -sHR -x /etc/tcp.smtp.cdb -u 81 -g 81 -n /var/qmail/cert.pem 0 465 \
/var/qmail/bin/qmail-smtpd &
/usr/local/bin/tcpserver-ssl -sHR -n /var/qmail/cert.pem 0 995 /var/qmail/bin/qmail-popup \
mx.fureai-ichiba.com /bin/checkpw /var/qmail/bin/qmail-pop3d Maildir &
↑ここでセットするホスト名は、秘密鍵を作成する時に入力した Common Name と同じでないといけないので注意!
mikan# chmod 755 /var/qmail/rc-ssl
mikan# ls -la /var/qmail/rc-ssl
-rwxr-xr-x 1 root qmail 346 Mar 28 22:07 /var/qmail/rc-ssl
mikan# ln -s /var/qmail/rc-ssl /usr/local/etc/rc.d/qmail-ssl.sh
mikan# ps -ax|grep tcp
22206 p2 I 0:00.01 /usr/local/bin/tcpserver -HR -x /etc/tcp.smtp.cdb -u 81 -g 81 0 smtp /var/qmail/b
22207 p2 I 0:00.01 /usr/local/bin/tcpserver -HR 0 pop3 /var/qmail/bin/qmail-popup mx.fureai-ichiba.c
mikan# /usr/local/etc/rc.d/qmail-ssl.sh
mikan# ps -ax | grep tcp
22206 p2 I 0:00.01 /usr/local/bin/tcpserver -HR -x /etc/tcp.smtp.cdb -u 81 -g 81 0 smtp /var/qmail/b
22207 p2 I 0:00.01 /usr/local/bin/tcpserver -HR 0 pop3 /var/qmail/bin/qmail-popup mx.fureai-ichiba.c
23708 p2 S 0:00.02 /usr/local/bin/tcpserver-ssl -sHR -x /etc/tcp.smtp.cdb -u 81 -g 81 -n /var/qmail/
23709 p2 S 0:00.02 /usr/local/bin/tcpserver-ssl -sHR -n /var/qmail/cert.pem 0 995 /var/qmail/bin/qma
無事起動。:-)
|
|