iPlanet Web Server

2007/7/29更新

対応バージョン: 4.1

/usr/netscape/server4/<サーバ>/logs配下にwdnotifyファイルが存在する場合、当該メッセージが出力されiWSが起動できない。

wdnotifyファイルはiWSの設定を変更した後に変更された設定を反映させるために再起動を行っている間に作成されるが、すぐに削除される。

ただし、iWSを強制終了した場合などに通常は再起動時に削除されるものの、まれに削除されずに残ってしまう場合がある。

このような場合はいったんwdnotifyファイルを削除した後、iWSを起動する。

関連資料・記事

2007/7/29更新

対応バージョン: 4.1

以下のいずれかの手順で再起動する。

restartスクリプト使用

# /usr/netscape/server4/<サーバ>/restart

上記で正常に再起動できなかった場合、stop/startスクリプト使用

# /usr/netscape/server4/<サーバ>/stop

stopスクリプト実行後、1分程度経っても以下のプロセスが終了しない場合はkillコマンドにて強制終了する。

./uxwdog -d /usr/netscape/server4/<サーバ>/config
ns-httpd -d /usr/netscape/server4/<サーバ>/config

上記プロセスが終了後、startスクリプトを実行する。

# /usr/netscape/server4/<サーバ>/start

2007/7/29更新

対応バージョン: 4.1

startスクリプト(/usr/netscape/server4/https-<サーバ名>/start)を以下のように変更し、パスフレーズをデーモンに与える。

ただしパスフレーズをプレーンテキストのまま使用するのでこのスクリプトが外部に漏れないように注意が必要である。

(変更前)

  40  ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@

(変更後)

  40  echo "<パスフレーズ>" | ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@

関連資料・記事

2007/7/29更新

対応バージョン: 4.1

まず通常のサーバ作成を行ない、そのサーバがSSLサーバ証明書のCSRを発行してCAに署名してもらったものを再度サーバにインストールする。

ここではCAとしてOpenSSLのSelf Signを用いたサーバの作成手順を示す。

作業は、CSRへの署名処理を除いて全てAdmin Serverにて行なう。

サーバ作成 ... [Servers] タブ

[Add Server]メニューより以下の項目を入力して[OK]をクリック

Server Name

サーバ名。デフォルトは自ホストのFQDN。

Server Port

サービスポート。デフォルトは80。

Server Identifier

Admin Serverが当該サーバを管理するための識別名。Webブラウザからは見えない。デフォルトは自ホスト名。

Server User

当該サーバが動作するUNIXアカウント。デフォルトは空。

MTA Host

MTAのホスト。デフォルトはlocalhost。

IPアドレスの逆引の方式

以下のいずれかから選択。

Always attempt to resolve IP addresses into host names.

常に逆引

Attempt to resolve IP addresses only for access control and CGI.

アクセスコントロール時、及び CGI 利用時のみ逆引

Never attempt to resolve IP addresses into host names. (デフォルト)

常に逆引なし

Document Root

ドキュメントルート。デフォルトは/usr/netscape/server4/docs。

一連の作業により、/usr/netscape/server4/https-配下に設定ファイル一式が作成される。

以降はこのサーバに対して設定を行なっていく。

サーバ設定(SSL CSR作成) ... [Security] タブ

[Create Database]メニューにて認証データベースへのパスワードをDatabase Password、Password(again)にそれぞれ入力して[OK]をクリックし、続いて[Request a Certificate]メニューにて以下の項目を入力して[OK]をクリックする。

[-] New certificate. ← CSR新規作成
[-] CA Email Address: ← CAのメールアドレス

CSRの属性は以下のとおり。

Key Pair File Password

鍵ペアにアクセスするためのパスフレーズ

Requestor name

CSR作成者

Telephone number

電話番号

Common name

CN

Email address

メールアドレス

Organization

組織

Organizational Unit

下部組織

Locality

住所(Marunouchi等)

State or Province

州(Tokyo等)

Country

国(JP等)

→ CSRは/tmp/mailtmp.XXXXXに保存される。

CSR署名 ... コマンドライン

CA(OpenSSL)によるCSRへの署名(Self Sign)を行う。

# cd /usr/local/ssl
# openssl ca -policy policy_anything -days 3650 -out /tmp/out.pem -infiles /tmp/mailtmp.XXXXX
Using configuration from /usr/local/ssl/openssl.cnf
Enter pass phrase for ./CA/private/cakey.pem:
← CAのプライベートキーにアクセスするためのパスフレーズ

Check that the request matches the signature
Signature ok
Certificate Details:
:
Certificate is to be certified until Apr 13 08:13:29 2013 GMT (3650 days)
Sign the certificate? [y/n]: ← y(署名)

1 out of 1 certificate requests certified, commit? [y/n] ← y(確定)
Write out database with 1 new entries
Data Base Updated

サーバ設定(SSLサーバ証明書インストール) ... [Security]タブ

[Install Certificate]メニューにて以下の項目を入力して[OK]をクリックする。

Key Pair File Password

鍵ペアにアクセスするためのパスフレーズ

[-] Message is in this file

作成した証明書ファイルのパス

読み込んだ証明書の内容を確認して[Add Server Certificate]をクリックする。

サーバ設定(SSL有効化) ... [Preferences]タブ

[Encryption On/Off]メニューにてEncryption: [On]をチェックして[OK]をクリック、次の画面で[Save and Apply]をクリックする。

これでSSLが有効化され、サーバも起動される。

尚、SSLサーバ証明書は/usr/netscape/server4/alias配下に1つの証明書につき2つファイルが作成される。

https-<サーバ名>-<ホスト名>-cert7.db

証明書

https-<サーバ名>-<ホスト名>-key3.db

秘密鍵

2007/7/29更新

対応バージョン: 4.1

.htaccessのAuthUserFileディレクティブに「AuthUserFile /etc/shadow」と指定しても認証がうまくいかず、ログファイルには以下のようなエラーが出ている。

basic-ncsa reports: user <ユーザ> password did not match pwfile /etc/shadow

これは、AuthUserFileディレクティブで指定できる認証用ファイルが以下のフォーマットの必要があるためで、/etc/shadowはフォーマットが違うので使用できない。

<ユーザ名>:<パスワード>

ただ、以下のように/etc/shadowを加工すれば間接的に利用可能である。

# awk -F':' '$1 != "root" {printf("%s:%s\n",$1,$2)}' /etc/shadow > <認証用ファイル>

(*) rootを除外するため「$1 != "root"」としているが、他に除外するアカウントがあれば同様の処理を行う。

関連資料・記事

2007/7/29更新

対応バージョン: 4.1

以下の手順で設定する。

iWS付属の専用モジュールhtaccess.soのロード設定

/usr/netscape/server4/<サーバ>/config/obj.confに以下の内容を追加してiWSを再起動。

他のInitディレクティブの最後
Init fn="load-modules" funcs="htaccess-init,htaccess-find" \
shlib="/usr/netscape/server4/plugins/htaccess/bin/htaccess.so"
Init fn="htaccess-init"
<Object name="default">ディレクティブ内のPathCheck定義の最後
PathCheck fn="htaccess-find"

特定のURLに対してLDAPのユーザ認証を利用していた場合はその設定を削除

/usr/netscape/server4/<サーバ>/conf_bk/<サーバ>.acl.?内の以下の記述を削除してiWSを再起動。

acl "path=/path/to/go/some.cgi";
authenticate (user,group) {
      database = "default";
      method = "basic";
};

iWSのユーザ認証用ファイルを作成するスクリプトを作成

処理内容は/etc/shadowからアカウント名とパスワードを取り出しiWSのユーザ認証用ファイル(/usr/netscape/server4/.htpasswd)を作成するという簡単なもの。

尚、以下のアカウントは対象外とする。

root(セキュリティ上の問題)
パスワードフィールドに`NP'が設定されているもの(元々ログイン不可)
パスワードフィールドが`*'で始まっているもの(元々ログイン不可)
#!/bin/sh -p

HTPASSWD=/usr/netscape/server4/.htpasswd

awk -F':' '$1 != "root" && $2 != "NP" && $2 !~ /\*/ {printf("%s:%s\n",$1,$2)}' \
/etc/shadow > ${HTPASSWD}

chmod 644 ${HTPASSWD}

認証させたいURL(ディレクトリ)配下に以下の内容で.htaccessを作成

AuthType Basic
AuthUserFile /usr/netscape/server4/.htpasswd
AuthGroupFile /dev/null
<Limit GET POST>
  order deny,allow
  deny from all
  allow from all
  require valid-user
</Limit>

2007/7/29更新

対応バージョン: 4.1

ディレクトリリストを表示する対象のディレクトリ内にbackground属性付のbodyタグを定義したファイルを用意し、iWSのDirectory Indexesモードの定義中でこのファイルをヘッダとして差し込むような設定にする。

設定手順を以下に示す。

尚、用意するファイルはディレクトリリストを表示した際にブラウザ上で表示されないように先頭が「.」で始まるファイルにする。

背景を指定したbodyタグを含んだファイルを作成する

例)

% cd <ディレクトリリストを表示させたいディレクトリ>
% vi .background
<body background="bg.jpg">

/usr/netscape/server4/<サーバ>/config/obj.confのindex行に「header="<ファイル>"」を追加する

(変更前)

Service method="(GET|HEAD)" type="magnus-internal/directory" \
fn="index-common"

(変更後)

Service method="(GET|HEAD)" type="magnus-internal/directory" \
fn="index-common" header=".background"

iWSを再起動する

2007/7/29更新

対応バージョン: 4.1

以下の作業を行なう。

ここでは例として変更前と後のホスト名をそれぞれhost_bef,host_aftとして説明する。

設定ディレクトリ名変更

# cd /usr/netscape/server4
# mv host_bef host_aft

ACL ファイル名変更

# cd httpacl
# mv generated.host_bef.acl generated.host_aft.acl
# mv genwork.host_bef.acl genwork.host_aft.acl

サーバ証明書ファイル名変更

# cd ../alias
# mv host_bef-cert7.db host_aft-cert7.db
# mv host_bef-key3.db host_aft-key3.db

init スクリプト修正

# cd ../host_aft
# vi start stop restart

→ host_befをhost_aftに変更

# cd config
# vi magnus.conf obj.conf

→ host_befをhost_aftに変更

# cd ../conf_bak
# vi admin.conf backups.conf magnus.conf obj.conf

Admin Server に反映

Admin Server上の[Servers]タブの[Manage Servers]にてManage Servers欄から[host_aft]を選択して[Manage]をクリック
画面右上の[Apply]をクリック、画面下の[Load Configuration Files]をクリック

2007/7/29更新

対応バージョン: 4.1

ログファイルには以下のエラーが出ている。

trying to GET /foo/bar.exe, handle-processed reports: 
no way to service request for /foo/bar.exe

EXEファイルはデフォルトでCGIとして動作するように設定されているが、通常のEXEファイルにはCGIとして動作するための処理が組み込まれていないためエラーとなる。

EXEファイルをCGIとしての実行対象から外したい場合はAdmin Serverより該当の仮想Webサーバの管理画面に入り、[Preferences]タブの[MIME Types]メニューよりmagnus-internal/cgiタイプを編集してcgi,exe,batの拡張子からexeを削除する。

2007/7/29更新

対応バージョン: 4.1

/usr/netscape/server4/<サーバ>/config/obj.confの<Object name="default">ディレクティブ内のPathCheck定義の最後に以下の内容を追加してiWSを再起動することによりNetscapeアイコンが表示されなくなる。

PathCheck fn="deny-existence" path="/<document root>/favicon.ico"

(参考)

IEから「お気に入りに追加」の操作を行うとiWSはfavicon.icoファイルをクライアントに返す。

上記の設定変更後はfavicon.icoファイルがクライアントに返されなくなり、エラーログには以下のように出力される。

security (xxx): for host xxx.xxx.xxx.xxx trying to GET /favicon.ico,
deny-existence reports: denying existence of /<document root>/favicon.ico

2007/7/29更新

対応バージョン: 4.1

ログファイルには以下のエラーが出ている。

failure (26124): for host 127.0.0.1 trying to POST /cgi-bin/hoge.cgi,
cgieng_scan_headers reports: the CGI program /foo/bar/cgi-bin/hoge.cgi
did not produce a valid header (read failed, error is
資源が一時的に使用できません。)

これは、CGIのタイムアウト値がデフォルトで5分に設定されているのが原因なので、設定ファイルを編集してこの値を変更することができる。

/usr/netscape/server4/<サーバ>/config/obj.confに「Init fn="init-cgi"」行を追加し、timeoutパラメータにタイムアウト値(秒)を指定する。

例) CGIタイムアウトを600秒(10分)に設定する

Init fn="init-cgi" timeout="600"

設定変更後、iWSを再起動する。

ちなみに、Admin ServerのGUI設定に「HTTP Persistent Connection Timeout」があるが、このパラメータではCGIのタイムアウト値は設定できない。

2007/7/29更新

対応バージョン: 4.1

準備

あらかじめインストールしておくもの

任意のLDAPサーバ (ユーザ管理にLDAPを使用する場合)

導入に必要なもの

「iPlanet Web Server Enterprise Edition for UNIX v4.1」CD-ROM

導入OS

Solaris 8

管理者アカウント作成

サーバプロセスを動作させるためのUNIXアカウント(例:www)

(*) UID、GID、ホームディレクトリ、ログインシェルは任意

インストール

インストールファイル展開

% su
# cd /var/tmp
# mkdir iws
# cd iws
# tar xvf <CD-ROM>/solaris/entprise/entprise.tar

インストーラ起動

# ./setup

Would you like to continue with installation? [Yes]: ■ ← リターン

Do you agree to the license terms? [No]: ■ ← y (ラインセンス条項に同意)

インストール方法選択

Choose an installation type:

  1. Express installation ... 簡易インストール (*)
  2. Typical installation ... 標準インストール
  3. Custom installation .... カスタムインストール

Choose an installation type [2]: ■ 

(*) 簡易インストールはポート番号などの各種設定やインストールする製品等が全て自動設定されるため、主に評価用等に使用する。

以降の説明は3(カスタムインストール)を選んだものとして進める。

インストールオプション指定

インストールディレクトリ
Install location [/usr/netscape/server4]: ■
インストールコンポーネント
  1. iPlanet Web Server, Enterprise Edition (8)
  
Specify the components you wish to install [All]: ■

  1. Server Core
  2. Java Runtime Environment
  3. Java Support
  4. SSJS Support
  5. SSJS Database Support
  6. Web Publishing Support
  7. WAI Support
  8. SNMP Support

Specify the components you wish to install [1, 2, 3, 4, 5, 6, 8]: ■
必要なサブコンポーネントを選択
ホスト名
Computer name [XXX]: ■ 
アカウント

System User [nobody]: ■ 
デフォルトインスタンス実行用

System Group [nobody]: ■ 
上記アカウントの所属グループ

Run iWS Administration Server as [root]: ■ 
Administration Server実行用

iWS Admin Server User Name [admin]: ■ 
Administration Server認証用(UNIXアカウントではない)

iWS Admin Server Password: ■ 
上記アカウントのパスワード

iWS Admin Server Password (again): ■ 
パスワード再入力
ポート
iWS Admin Server Port [8888]: ■ 
Administration Server用

Web Server Port [80]: ■ 
Web Server用
その他
Do you want to register this with an existing Directory Server [No]: ■
アカウントをLDAPベースのディレクトリサーバで管理するか?

Web Server Content Root [/usr/netscape/server4/docs]: ■
Web Serverのドキュメントルート

Do you want to use your own JDK [No]: ■ 
独自のJDKを使用するか?
言語
Please select the default language for this instance of the Web Server.
エンドユーザ画面とエラーメッセージに使用する言語

  1. English
  2. Japanese

Default Language: ■ 

Please select the language packs the search engine should support.
検索エンジンで(英語以外に)サポートする言語

  1. Japanese

Selection: ■ 

Please select the default language and character set for text search and indexing.
検索エンジンで使用するデフォルト言語

  1. English (ISO-8859-1)
  2. Japanese (Auto-Detect)
  3. Japanese (EUC-JP)
  4. Japanese (ISO-2022-JP)
  5. Japanese (ISO-2022-JP 8bit)
  6. Japanese (Shift JIS)

Default Language: ■ 

ここまで選択するとインストールが始まる。

インストール後、作業用ファイル削除

# /bin/rm -rf /var/tmp/iws

インストール物 (man,infoは除く)

/usr/netscape/server4/*/*

各種設定

Administration Server起動

# /usr/netscape/server4/https-admserv/start

Webブラウザでhttp://localhost:XXXX/にアクセスしてGUIで設定を行う。設定の詳細については割愛する。

(*) XXXXはインストール時に指定したAdministration Server用のポート

initスクリプト設置

スクリプト作成

/etc/init.d/iws_adminservを作成する。

#!/sbin/sh

IWS_HOME=/usr/netscape/server4
IWS_START=${IWS_HOME}/https-admserv/start
IWS_STOP=${IWS_HOME}/https-admserv/stop

case "$1" in
'start')
  if [ -x ${IWS_START} ]; then
    echo "iPlanet Web Server Admin Server"
    ${IWS_START}
  fi
  ;;

'stop')
  if [ -x ${IWS_STOP} ]; then
    echo "iPlanet Web Server Admin Server"
    ${IWS_STOP}
  fi
  ;;

*)
  echo "Usage: `basename $0` {start|stop}"
  exit 64
  ;;

esac

exit 0

スクリプト配置

# cd /etc/rc2.d
# ln -s ../init.d/iws_adminserv S99iws_adminserv

# cd /etc/rc0.d
# ln -s ../init.d/iws_adminserv K99iws_adminserv