#contents
* Virtual Server で SSL 接続をサポートする [#i4836d19]
- Fedra2 環境に以降するにあたり、以下の内容を実現しようと考えた
-- Virtual server の設定により www, www-SSL, wiki, webmail を独立させる
--- 従来 https://www.hmuna.com/wiki としていたものを https://wiki.hmuna.com/ としたい
-- 各エントリーに対して SSL 通信を確保する
-- SSL 認証関係を統合して管理する (従来は Apache系、Mail系が別々だった)
-- 各 virtual server 毎にページ内でユーザ認証を行えるようにしたい (Digest 認証を使いたい)
-- webmail が使えるようにしたい
** SSL と virtual server の関係 [#x7516407]
- virtual server の設定は /etc/httpd/conf/httpd.conf で行っている。
- しかし このスクリプトの実行よりも先にSSL 通信確立が行われる。
-- 接続先毎に IP を分けた(=IP based)virtual server なら個々に SSL 設定が可能
-- 名前だけによる(=Name based、DNS エントリー上の同一IPに複数の名前を定義)では、SSL 対応が出来ない.... が一般解釈
- virtual server アクセス時にポートを明示的に指定させることで、Name based virtual server の SSL 化が出来ることがわかった。
** /etc/httpd/conf/httpd.conf と /etc/httpd/conf.d/ssl.conf の設定を編集 [#bb890b22]
*** httpd.conf の編集 [#k87d6e9b]
- Listen port の設定はここに書いた (ssl.conf の設定は無効にした)
- 2005-1-1 時点での httpd.conf → &ref(httpd.conf);
- 2005-10-24 時点での httpd.conf → &ref(httpd.conf_20051024);

 #
 # Use name-based virtual hosting.
 #
 #NameVirtualHost *:80
 #NameVirtualHost www.hmuna.com
 NameVirtualHost *:443
 NameVirtualHost *:9443
 NameVirtualHost *:9444
 
 # Munakata add virtual host entry for WWW page
 #<VirtualHost www.hmuna.com>
 #   ServerAdmin root@hmuna.com
 #   DocumentRoot /var/www/html/htdocs
 #   ServerName www.hmuna.com
 #</VirtualHost>
 
 # Munakata add virtual host entry for PukiWiki page
 #<VirtualHost wiki.hmuna.com>
 #    ServerAdmin root@hmuna.com
 #    DocumentRoot /var/www/html/pukiwiki/
 #    ServerName wiki.hmuna.com
 #</VirtualHost>
*** ssl.conf の編集 [#x6f3e43e]
- Virtual server の設定はここに書いた
- 認証関係は 各 Virtual server directive の中に設定した
- 2005-1-1 時点での ssl.conf → &ref(ssl.conf);
- 2005-10-24 時点での ssl.conf → &ref(ssl.conf_20051024);

 </VirtualHost>
 
 # ----------------------------------------------------------------------------------------------------------------------------------
 # muna add virtual host entry for webmail (443)
 # -----------------------------------------------------------------------------------------------------------------------------------
 ##
 ## SSL Virtual Host Context (443)
 ## 
 
 <VirtualHost _default_:443> 
 
 DocumentRoot "/var/www/html/htdocs"
 ServerName webmail.hmuna.com:443
 ServerAdmin munakata@hmuna.com
 
 #   Server Certificate:
 SSLCertificateFile /usr/local/certs/webmail_server.crt
 
 #   Server Private Key:
 SSLCertificateKeyFile /usr/local/certs/server.key
 
 #   Certificate Authority (CA):
 SSLCACertificatePath /usr/local/certs/demoCA
 SSLCACertificateFile /usr/local/certs/demoCA/cacert.pem
 
 # muna add Revocation File
 # temporaly disabled by muna
 #SSLCARevocationFile /usr/local/certs/demoCA/crl/crl.pem
 
 # muna modify only trust CA direct certfication
 # now disable client verification
 #SSLVerifyClient require
 #SSLVerifyDepth  1
 
 # muna enables .htaccess control inder www-ssl data directory
 <Directory "/var/www/html/webmail">
     AllowOverride All
 </Directory>
 </VirtualHost>

 # -----------------------------------------------------------------------------------------------------------------------------------
 # muna add virtual host entry for wiki (9443)
 # ----------------------------------------------------------------------------------------------------------------------------------
 ##
 ## SSL Virtual Host Context (9443)
 ##
 
 <VirtualHost _default_:9443>
 # munakata add SSL virtual host entry
 
 DocumentRoot "/var/www/html/pukiwiki"
 ServerName wiki.hmuna.com:9443
 ServerAdmin munakata@hmuna.com

 # -----------------------------------------------------------------------------------------------------------------------------------
 # muna add virtual host entry for webmail (9444)
 # -----------------------------------------------------------------------------------------------------------------------------------
 ##
 ## SSL Virtual Host Context (9444)
 ##
 
 <VirtualHost _default_:9444>
 
 DocumentRoot "/var/www/html/webmail"
 ServerName webmail.hmuna.com:9444
 ServerAdmin munakata@hmuna.com
** virtual server データディレクトリーのパーミション設定 [#m88b45ad]
- 設定がおかしいと本来のページにアクセスされない
-- ページなし(404)にならず、default のページにリダイレクトされる
-- これは SSL 無しのページなので、設定上不味い。 理由を解析する必要がある
- /var/www/html の下の設定確認
-- 各ディレクトリー下のパーミションは 755 にした
-- 各ディレクトリー下のオーナーは apache.apache にした

 [root@power certs]# ls -al /var/www/html/
 合計 16
 drwxr-xr-x  3 root   root   4096  1月  1 19:56 .
 drwxr-xr-x  8 root   root   4096 11月 13 00:20 ..
 drwxr-xr-x  2 apache apache 4096 12月 31 18:13 htdocs
 -rwxrwxrwx  1 apache apache   18 12月 25 08:00 info.php
 lrwxrwxrwx  1 apache apache   20 12月 25 08:51 pukiwiki -> /var/pukiwiki- 1.4.4/
 lrwxrwxrwx  1 apache apache   24  1月  1 19:56 webmail -> /usr/share/squirrelmail/
* Virtual Server の認証の設定 [#k57b1930]
** Digest 認証の設定 [#u87136e2]
- /etc/httpd/conf.d/ssl.conf の設定

 # muna adopt digest authrization to wiki space
 <Directory "/var/www/html/pukiwiki">
         Options Indexes FollowSymlinks
         AllowOverride None
         Order allow,deny
         Allow from all
         AuthType Digest
         AuthName "private wiki"
         AuthDigestFile /usr/local/certs/secret_wiki_digest
         Require vallid-user
 </Directory>
- /usr/local/serts/secret_wiki_digest の作成
-- ここで指定する RELM(”private wiki” の部分)が上記の定義と一致している必要があるようだ (名前とパスワード以前に)
 [root@power certs]# htdigest -c secret_wiki_digest "private wiki" munakata
 Adding password for munakata in realm private wiki.
 New password:   ← nananamuna
 Re-type new password:

- 一般ユーザーから認証ファイルが見えないようにパーミションを変更

 [root@power certs]# chown apache.apache secret_wiki_digest
 [root@power certs]# chmod 600 secret_wiki_digest

 [root@power certs]# ls -l
 合計 24
 drwxr-xr-x  6 root   root   4096 12月 30 21:35 demoCA
 -rw-r--r--  1 root   root   1839 12月 30 21:43 mail.pem
 -rw-------  1 apache apache   55 12月 31 09:26 secret_wiki_digest
 -rw-r--r--  1 root   root    952 12月 30 21:37 server.crt
 -rw-r--r--  1 root   root    708 12月 30 21:29 server.csr
 -rw-r--r--  1 root   root    887 12月 30 21:24 server.key
 
 [root@power certs]# cat secret_wiki_digest
 munakata:private wiki:bec8fa7b1226a242f6a0c367d070fe42

- これで Digest 認証で正常に Top page まで入れることを確認した。
- IE6 では wiki のリンク先にアクセスするとエラーになることが判った。
- log を見ると
 [Fri Dec 31 22:18:29 2004] [error] [client 192.168.1.12] Digest: uri mismatch - </> does not match request-uri </?DVD_VideoEdit>, referer: https://wiki.hmuna.com:9443/
となっている。 Mozilla や Firefox では問題なく表示できるので IE6 固有の問題と思われる。
** BASIC 認証への設定 [#a33dcddb]
- 上記の問題の回避のため、BASIC 認証の設定を行う
- /etc/httpd/conf.d/ssl.conf の中の Virtual Server 毎の定義部に追加する
- この設定により、virtual server 毎の認証方法を決めることができた。
-- WWW-SSL については Digest 認証、 wiki は BASIC 認証、 webmail は認証なし
 # instead, I adopt basic authrization
 <Directory "/var/www/html/pukiwiki">
         Options Indexes FollowSymlinks
         AllowOverride None
         Order allow,deny
         Allow from All
         AuthType Basic
         AuthName "Enter private wiki password"
         AuthUserFile /usr/local/certs/secret_wiki_basic
         Require valid-user
 </Directory>
- BASIC 認証用のパスワードファイルの作成
 [root@power root]# cd /usr/local/certs/
 [root@power certs]# htpasswd -c secret_wiki_basic munakata
 New password: ← "nananamuna"
 Re-type new password:
 Adding password for user munakata [root@power certs]# htpasswd -c *** httpd 
 
 [root@power certs]# chown apache.apache secret_wiki_basic
 [root@power certs]# ls -l secret_wiki_basic
 -rw-------  1 apache apache 23  1月  2 10:33 secret_wiki_basic
* SSL の自動起動 [#k16d806e]
- /etc/rc.d/inetd/httpd の内容を編集する (一箇所追加のみ)
 #
 # muna modify to start SSL
 #
 
 start() {
         echo -n $"Starting $prog: "
         check13 || exit 1
 #       daemon $httpd $OPTIONS
         daemon $httpd -D SSL $OPTIONS
         RETVAL=$?
         echo
         [ $RETVAL = 0 ] && touch ${lockfile}
         return $RETVAL
 }
** 起動直後のポートの確認 (SSL で起動していることの確認) [#q1e8242c]
- 起動すると 443(www-SSL),9443(wiki),9444(webmail) が LISTEN になっている
 [root@power root]# netstat -an --tcp
 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:32770           0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:32771         0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:32772           0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:783           0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:1007            0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:9010          0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:988             0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN
 tcp        0      0 :::9443                 :::*                    LISTEN
 tcp        0      0 :::9444                 :::*                    LISTEN
 tcp        0      0 :::80                   :::*                    LISTEN
 tcp        0      0 :::22                   :::*                    LISTEN
 tcp        0      0 :::443                  :::*                    LISTEN
 tcp        0   1380 ::ffff:192.168.1.17:22  ::ffff:192.168.1.1:2036 ESTABLISHED
 tcp        0      0 ::ffff:192.168.1.1:9443 ::ffff:192.168.1.1:2055 TIME_WAIT
 [root@power root]#

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS