https対応にしてみた。

家の自宅サーバに関して。
学校Weblogシステムを運用する際、パスワードの設定などの管理は、Apache.htaccessに任せているため、
一応大丈夫だとは思う。

でも厳密に言うと、間違いで、要するにパスワードを送っている、まさにその最中ネットワーク回線を流れている
パケットから、情報が漏洩する危険性は否定できない。

上のように書くと、いかにも難しい技術のようだが(いや難しい)、実は、そんな情報を一発で取得できるソフトがある。
Vigilというやつ。
http://www.forest.impress.co.jp/lib/inet/servernt/netanlz/vigil.html

会社にいるとき、どうやら不審な挙動をする、ある機械(社外秘)のネットワーク内のプロセスを見るために、
ちょっと使ってみたりした。そしたら、他のいらない情報までわんさか入ってきた。LAN内だけだけど。
フロア全員のWebでアクセスしたページや、出したり届いたりしたメールの文章。

ありとあらゆるネットワークパケットを取得したのである。後ですんませんメールを出しておいた記憶が。
PLやSL、あ、そのとき部長もいたな。皆で大笑い。

まぁこの技術を、学校Weblogシステムに仕込んでおいて、気長に誰かが、
パスワードを変更されるのを待てばよいわけ。

そしたら入力したパスワード情報が、そのまま抜き出されてしまうのだ。
そんな暇な人いないと思うけれども。

というわけで、パケットに流れている内容も暗号化してしまえばよいわけである。
SSLというやつ。

それを実装してみた。でもDNSをBindしていないので、家からは見れない。
明日学校で確認しよう。

以下、その作業内容を記述。基本的には、
https://earlybirds.ddo.jp/namahage/inegalog/article.php?id=19
を参照。このサイトもSSL化している。
危険なサイトとか言われるけれども、そこは、証明書の発行を無料でやっているんで
しかたのないところ。危険なサイトという警告を消したかったら、
ちょっとお小遣いのレベルでは払えない、高額な金を納めるしかない。

=======
Mac-mini:~/workspace ymlab$ cd forSSL/
Mac-mini:~/workspace/forSSL ymlab$ ls
Mac-mini:~/workspace/forSSL ymlab$ which openssl
/usr/bin/openssl
Mac-mini:~/workspace/forSSL ymlab$ openssl genrsa -out server.key 1024
Generating RSA private key, 1024 bit long modulus
..........++++++
...............................................++++++
unable to write 'random state'
e is 65537 (0x10001)
Mac-mini:~/workspace/forSSL ymlab$ ls
server.key
Mac-mini:~/workspace/forSSL ymlab$ less server.key

          • BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQCsIXrbyUGdZJHvbXAJSk/FrlDw9zxTIYCy0XxFkAhYZhx2DH83
l6j5im......

          • END RSA PRIVATE KEY-----

Mac-mini:~/workspace/forSSL ymlab$ openssl req -new -key server.key -out ser
.csr
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]:都道府県情報
Locality Name (eg, city) :市区町村
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Personal
Organizational Unit Name (eg, section)
:section
Common Name (eg, YOUR name) :ymlabo.ddo.jp
Email Address
:E-mail Address

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password :
An optional company name
:
Mac-mini:~/workspace/forSSL ymlab$

Mac-mini:~/workspace/forSSL ymlab$ openssl genrsa -out ca.key 1024
Generating RSA private key, 1024 bit long modulus
.........................++++++
.........................................++++++
unable to write 'random state'
e is 65537 (0x10001)
Mac-mini:~/workspace/forSSL ymlab$ openssl req -new -x509 -days 365 -key ca.key
-out ca.crt
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]:都道府県
Locality Name (eg, city) :市区町村
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Personal
Organizational Unit Name (eg, section)
:section
Common Name (eg, YOUR name) :ymlab
Email Address
:E-mail Address
Mac-mini:~/workspace/forSSL ymlab$ ls
ca.crt ca.key server.csr server.key
Mac-mini:~/workspace/forSSL ymlab$

Mac-mini:~/workspace/forSSL ymlab$ echo 01 > ca-cert.srl
Mac-mini:~/workspace/forSSL ymlab$ sudo openssl x509 -CA ca.crt -CAkey ca.key -CAser
ial ca-cert.srl -req -days 365 -in server.csr -out server.crt
Signature ok
subject=/C=JP/ST=Osaka/L=Hirakata/O=Personal/OU=section/CN=ymlabo.ddo.jp/emailAd
dress=メールアドレス
Getting CA Private Key
Mac-mini:~/workspace/forSSL ymlab$

Mac-mini:~/workspace/forSSL ymlab$ ls /System/Library/OpenSSL/certs/
Mac-mini:~/workspace/forSSL ymlab$ sudo mv server.key /System/Library/OpenSSL/c
erts/
Mac-mini:~/workspace/forSSL ymlab$ sudo mv server.crt /System/Library/OpenSSL/c
erts/
Mac-mini:~/workspace/forSSL ymlab$ chmod 744 /System/Library/OpenSSL/certs/serv
er.*
哺ac-mini:~/workspace/forSSL ymlab$ mkdir /Users/ymlab/Documents/FORSSL
Mac-mini:~/workspace/forSSL ymlab$ mv * /Users/ymlab/Documents/FORSSL/
Mac-mini:~/workspace/forSSL ymlab$ locate httpd.conf
/private/etc/httpd/httpd.conf
/private/etc/httpd/httpd.conf.backup
/private/etc/httpd/httpd.conf.bak
/private/etc/httpd/httpd.conf.default
/private/etc/httpd/httpd.conf.entropy-backup.1143124290
/private/etc/httpd/httpd.conf.entropy-temp
/usr/local/php5/httpd.conf.php
Mac-mini:~/workspace/forSSL ymlab$ cd /private/etc/httpd/
Mac-mini:/private/etc/httpd ymlab$ ls
httpd.conf magic
httpd.conf.backup magic.default
httpd.conf.bak mime.types
httpd.conf.default mime.types.default
httpd.conf.entropy-backup.1143124290 users
httpd.conf.entropy-temp
Mac-mini:/private/etc/httpd ymlab$ cp httpd.conf ./httpd.conf.backup20061127
cp: ./httpd.conf.backup20061127: Permission denied
Mac-mini:/private/etc/httpd ymlab$ sudo cp httpd.conf ./httpd.conf.backup200611
27
Mac-mini:/private/etc/httpd ymlab$ ls
httpd.conf httpd.conf.entropy-temp
httpd.conf.backup magic
httpd.conf.backup20061127 magic.default
httpd.conf.bak mime.types
httpd.conf.default mime.types.default
httpd.conf.entropy-backup.1143124290 users
Mac-mini:/private/etc/httpd ymlab$ vi httpd.conf




httpd.confの編集は、

#LoadModule ssl_module libexec/httpd/libssl.so
を、
LoadModule ssl_module libexec/httpd/libssl.soに。

#AddModule mod_ssl.c
を、
AddModule mod_ssl.c
に。

Port 80 を、
#Port 80に。

で、

Listen 443
Listen 80

を、追加。

ServerName を、証明書で設定したサーバー名と同じにする。
ddo.jpとか。



# Some MIME-types for downloading Certificates and CRLs
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
# inintial Directives for SSL
#SSLProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache dbm:/var/run/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/var/run/ssl_mutex
SSLRandomSeed startup builtin
SSLLog /var/log/httpd/ssl_engine_log
SSLLogLevel info
##
## SSL Virtual Host Context
##

#Just to keep things sane...
DocumentRoot "/Library/WebServer/Documents"
ServerName あなたのお名前.ddo.jpまたは127.0.0.1
ServerAdmin あなたのメールアドレス
SSLEngine off


# General setup for the virtual host
DocumentRoot "/Library/WebServer/Documents"
#ここで入力するServerNameは、上のステップ証明書署名要求(csrファイル)作成でつかったのと同じ名前にします
ServerName あなたのお名前.ddo.jpまたは127.0.0.1
ServerAdmin あなたのメールアドレス
ErrorLog /var/log/httpd/error_log
TransferLog /var/log/httpd/access_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
#SSLProtocol all -SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
# Path to your certificates and private key
SSLCertificateFile /System/Library/OpenSSL/certs/server.crt
SSLCertificateKeyFile /System/Library/OpenSSL/certs/server.key

SSLOptions +StdEnvVars


SSLOptions +StdEnvVars

# correction for browsers that don't always handle SSL connections well
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog /var/log/httpd/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


を追加。