Linux + J2SDK 1.4 + Apache 2.0 + SSL + Tomcat 4.1 セットアップ

ここでは Linux 上で Apache 2.0 を SSL 付きでソースからビルドする手順について説明します。

準備

下記ファイルをダウンロードします。
ダウンロードしたファイルは /usr/local/src にコピーしておきます。

インストール

J2SDK 1.4

  1. 展開とインストール
    cd /usr/local/src
    sh j2sdk-1_4_2_02-linux-i586-rpm.bin
    su
    rpm -Uvh j2sdk-1_4_2_02-linux-i586.rpm
    exit

  2. 環境変数設定
    次の環境変数を設定します。
    項目

    JAVA_HOME
    /usr/java/j2sdk1.4.2_02
    PATH
    $JAVA_HOME/bin

    (例) /etc/profile、または ~/.bash_profile に次の行を追加します。
    JAVA_HOME=/usr/java/j2sdk1.4.2_02
    PATH=$PATH:$JAVA_HOME/bin
    (中略)
    export JAVA_HOME PATH

OpenSSL

  1. ソースを展開。
    cd /usr/local/src
    tar zxvf openssl-0.9.7c.tar.gz
    cd openssl-0.9.7c

  2. 次の設定で configure を実行。

    ./config --prefix=/opt/openssl-0.9.7c

  3. コンパイル。
    make

  4. root 権限でインストール。
    su
    make install
    # /opt/ssl でアクセスできるようシンボリックリンクを設定
    cd /opt
    ln -s openssl-0.9.7c ssl
    exit

Apache 2.0

  1. ユーザ apache を作成。
    cd /usr/local/src
    su

    useradd apache
    exit

  2. ソースを展開。
    tar zxvf httpd-2.0.48.tar.gz
    cd httpd-2.0.48

  3. 次の設定で configure を実行。
    ./configure --prefix /opt/apache-2.0.48 --enable-modules="ssl"  --with-ssl=/opt/ssl

  4. コンパイル。
    make

  5. root 権限でインストール。
    su
    make install
    # /opt/apache2 でアクセスできるようシンボリックリンクを設定
    cd /opt
    ln -s apache-2.0.48 apache2
    exit

Tomcat 4.1

  1. ユーザ tomcat を作成。
    su
    useradd tomcat

  2. バイナリを展開。
    cd /opt
    # ユーザ tomcat がオーナーとなるように Tomcat を展開。
    mkdir jakarta-tomcat-4.1.29
    chown tomcat:tomcat jakarta-tomcat-4.1.29
    su tomcat
    tar zxvf /usr/local/src/jakarta-tomcat-4.1.29.tar.gz
    # /opt/tomcat4.1 でアクセスできるようシンボリックリンクを設定
    ln -s jakarta-tomcat-4.1.29 tomcat4.1
    # root に戻る
    exit
    # ログインユーザに戻る
    exit

JK2

  1. ソースを展開。
    cd /usr/local/src
    tar zxvf jakarta-tomcat-connectors-jk2-2.0.2-src.tar.gz

  2. 次の設定で configure を実行。
    cd jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
    chmod +x buildconf.sh
    ./buildconf.sh
    ./configure --with-PACKAGE=yes --with-apxs2=/opt/apache2/bin/apxs --with-tomcat41=/opt/tomcat4.1

  3. コンパイル。
    make

  4. コンパイルされたモジュールとコンフィグレーションファイルのサンプルを root 権限で Apache2 にコピー。
    su
    cp ../build/jk2/apache2/mod_jk2.so /opt/apache2/modules
    chown root:root /opt/apache2/modules/mod_jk2.so
    exit

証明書作成

「webtribe」で始まるファイル名は、適宜読み替えてください。
  1. 証明書用ディレクトリ作成。
    su
    cd /opt/apache2/conf
    mkdir certs
    cd certs

  2. 秘密鍵作成。(1024 ビットの RSA 形式、暗号化形式は Triple DES。)
    /opt/ssl/bin/openssl genrsa -des3 1024 > webtribe.key.pem
    Generating RSA private key, 1024 bit long modulus
    ...............++++++
    ............................++++++
    e is 65537 (0x10001)
    Enter pass phrase:  <== パスフレーズを入力します。
    Verifying - Enter pass phrase:  <== もう一度パスフレーズを入力します。
    ここで入力したパスワードは後で使いますので、忘れないようにしてください。

  3.  秘密鍵からパスフレーズを削除。
    /opt/ssl/bin/openssl rsa -in webtribe.key.pem -out webtribe.key.pem
    Enter pass phrase for webtribe.key.pem:  <== 先ほど入力したパスフレーズを入力します
    writing RSA key
    秘密鍵からパスフレーズを削除すると、Apache 起動時にパスフレーズを入力する必要がなくなります。
    安全のため、Apache 起動時にパスフレーズを入力するようにしておきたい方は、この作業はスキップしてください。

  4. CSR を作成。
    /opt/ssl/bin/openssl req -new -key webtribe.key.pem -out webtribe.csr.pem
    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]:Osaka
    Locality Name (eg, city) []:Osaka
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Media Knowledge Industrial Co.,Ltd.
    Organizational Unit Name (eg, section) []:Product
    Common Name (eg, YOUR name) []:webtribe.mki.ne.jp
    Email Address []:

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    この時、Common Name にはサーバ名を指定します。
    サーバ名とは、URL の一部として指定するホスト名を指します。
    例えば、クライアントから https://webtribe.mki.ne.jp/webtribe/RunClient.jnlp に接続して JWS を起動する場合は、「webtribe.mki.ne.jp」を Common Name に指定します。
    実行時には、証明書の Common Name と接続先 URL のホスト名が一致するかどうかチェックされます。

  5. 自己署名の証明書作成。
    /opt/ssl/bin/openssl x509 -in webtribe.csr.pem -out webtribe.cert.pem -req -signkey webtribe.key.pem -days 365
    Signature ok
    subject=/C=JP/ST=Osaka/L=Osaka/O=Media Knowledge Industrial Co.,Ltd./OU=Product/CN=webtribe.mki.ne.jp
    Getting Private key
    -days パラメータは証明書の有効日数を指定します。

  6. 作成したファイルをユーザ root 以外は読み込むことができないように権限を設定。
    chmod 400 *

  7. /opt/apache2/conf/ssl.conf を次のように編集します。
    SSLCertificateFile /opt/apache2/conf/certs/webtribe.cert.pem
    SSLCertificateKeyFile /opt/apache2/conf/certs/webtribe.key.pem

コンフィグレーション

Apache 2.0

Tomcat 4.1

JK2

起動

Apache 2.0

su
cd /opt/apache2/bin
# コンフィグレーションチェック
./apachectl configtest
# コンフィグレーションチェックでエラーがなければ、SSL 付きで Apache を起動
./apachectl sslstart
exit

Tomcat 4.1

# root に切り替え
su
# ユーザ tomcat として起動
su - tomcat
cd /opt/tomcat4.1/bin
./startup.sh
exit
exit

確認

ブラウザの URL に https://hostname/webtribe/readme.txt を入力して、表示できるかどうかを確認します。
hostname は、実際に接続するサーバのホスト名に置き換えます。
webtribe は、実際に Webtribe/VisualFrame をセットアップしたコンテキストルート名(プロジェクト名)に置き換えます。

証明書インポート(クライアント Java 環境)

JWS からサーバに https で接続する場合、接続先のサーバ証明書が認証局のものではなく、自己署名されたサーバ証明書を使っている場合、Java VM がサーバ証明書の正当性を確認することができないため、エラーが発生します。(UntrustedServerError)
そこでサーバ証明書をクライアント側にインポートしておくことにより、Java VM がサーバの正当性を識別できるようになります。

(例) J2SDK 1.4.2_02 を C ドライブにセットアップしている場合に、サーバ証明書 c:\certs\webtribe.cert.pem をインポートする手順。
コマンドプロンプトから次の操作を行います。
(あらかじめサーバ証明書をc:\certs にコピーしておきます。)
C:\WINNT>cd \Program Files\Java\j2re1.4.2_02\lib\security

C:\Program Files\Java\j2re1.4.2_02\lib\security>keytool -import -trustcacerts -keystore cacerts -alias webtribe -storetype jks -file c:\certs\webtribe.cert.pem
キーストアのパスワードを入力してください:  changeit  <== cacerts の初期パスワードは changeit です
所有者: CN=webtribe.mki.ne.jp, OU=Product, O="Media Knowledge Industrial Co.,Ltd.", L=Osaka, ST=Osaka, C=JP
実行者: CN=webtribe.mki.ne.jp, OU=Product, O="Media Knowledge Industrial Co.,Ltd.", L=Osaka, ST=Osaka, C=JP
シリアル番号: 0
有効日: Fri Dec 05 15:19:15 JST 2003 有効期限: Sat Dec 04 15:19:15 JST 2004
証明書のフィンガープリント:
         MD5:  35:F5:E2:D7:2F:75:0B:4A:00:B5:ED:1B:48:16:07:B2
         SHA1: 7A:9C:41:93:BD:29:D6:E0:6C:49:80:57:D2:F5:A7:6D:67:60:11:10
この証明書を信頼しますか? [no]:  yes
証明書がキーストアに追加されました。

各パラメータは次のような意味があります。
パラメータ
説明
-import
インポート
-trustcacerts
インポートするのは、信頼できる認証局の発行した証明書
(自己署名のサーバ証明書を信頼する、ということになります。)
-keystore
信頼されたルート証明書を格納するファイル
-alias
インポートする証明書の別名
-storetype
証明書ストアのタイプ
-file
証明書ファイル


当ドキュメントは、TurboLinux 8 Server での動作を元に作成しました。