ApacheをOpenSSLを有効にしてインストール

Apache 1.3系のSSLについて。

ダウンロード

  • Apache
  • OpenSSL
  • mod_ssl 以上のソースファイルが必要になる。

最新版は以下を参照

※mod_sslはApacheのバージョンに対応したものを選択する必要がある

最新版を使うことを推奨する。 2003.05.21時点の1.3系の最新は1.3.27となっている。 今回は以下のバージョンを使用する。

Apache1.3.27
OpenSSL0.9.7b
mod_ssl2.8.14
// 作業用ディレクトリ作成
# cd /usr/local/src
# mkdir apache
# cd apache
// Apacheのダウンロード
# wget http://hoge/download/apache/apache_1.3.27.tar.gz
// OpenSSLのダウンロード
# wget http://hoge/download/openssl/openssl-0.9.7b.tar.gz
// mod_sslのダウンロード
# wget http://hoge/download/modssl/mod_ssl-2.8.14-1.3.27.tar.gz

コンパイル

OpenSSL、Apache、mod_sslを組み合わせる場合、コンパイルには順序がある。

OpenSSLのコンパイル

# tar xvfz openssl-0.9.7b.tar.gz
# cd openssl-0.9.7b
# ./config --prefix=/usr/local --openssldir=/usr/local/openssl -fPIC
# make
# cd ..
  • -fPIC はDSO 版作成時に必要な PIC(Position Independent Code)オプション

Apacheのソース展開

# tar xvfz apache_1.3.27.tar.gz

mod_sslのコンフィグ 公開ディレクトリはデフォルトで/usr/local/apache/htdocsになる。 今回は/pub/www/htdocs以下に変更している。 同様にicons/やcgi-bin/も変更している。 この様に変更する場合はあらかじめ下の

  • htdocsdir
  • iconsdir
  • cgidir で指定するディレクトリの親ディレクトリを作成しておく。
    # mkdir /pub/www
# tar xvfz mod_ssl-2.8.14-1.3.27.tar.gz
# cd mod_ssl-2.8.14-1.3.27
# OPTIM="-O2" ./configure \
--with-apache=../apache_1.3.27 \
--with-ssl=../openssl-0.9.7b \
--prefix=/usr/local/apache \
--enable-shared=ssl \
--enable-module=so \
--enable-rule=SHARED_CORE \
--enable-module=rewrite \
--enable-shared=rewrite \
--htdocsdir=/pub/www/htdocs \
--iconsdir=/pub/www/icons \
--cgidir=/pub/www/cgi-bin \
--enable-module=mod_proxy \
--enable-shared=mod_proxy

上記オプションではmod_proxyもDSOとして使用している。

# cd ..

mod_sslのコンフィグにより、ApacheのMakefileが生成される。 したがってApacheにコンパイルオプションを追加する場合はmod_sslのコンフィグ時に追加しておく。

Apacheのコンパイル

# cd apache_1.3.27
# make

証明書、鍵生成(質問に答える感じ)

# make certificate

※サンプルitb-TECHを参考

コマンドを実行すると一問一答形式になりますのでQ&Aのサンプルを掲載しておきます。 
-------------------------------------------------------------------------- 
Q1 
Signature Algorithm ((R)SA or (D)SA) [R]: 
暗号化方式は何を利用しますか? 

A1 
RSAを使うのでRと入力してからリターンを押してください。 
-------------------------------------------------------------------------- 
Q2 
1. Country Name (2 letter code) [XY]: 
証明書を発行するための情報です。国名を入力してください。 

A2 
日本なのでJPと入力しましょう。2byte分しか文字列をうけつけません。 
-------------------------------------------------------------------------- 
Q3 
2. State or Province Name (full name) [Snake Desert]: 
証明書を発行するための情報です。都道府県名を入力してください。 

A3 
大阪なのでOsakaと入力しましょう。 
-------------------------------------------------------------------------- 
Q4 
3. Locality Name (eg, city) [Snake Town]: 
証明書を発行するための情報です。市町村名を入力してください。 

A4 
京橋なのでKyobashiと入力しましょう。 
-------------------------------------------------------------------------- 
Q5 
4. Organization Name (eg, company) [Snake Oil, Ltd]: 
証明書を発行するための情報です。組織名(会社名)を入力してください。 

A5 
ITBoostなのでITBoostと入力しましょう。 
-------------------------------------------------------------------------- 
Q6 
5. Organizational Unit Name (eg, section) [Webserver Team]: 
証明書を発行するための情報です。部署名を入力してください。 

A6 
学生なのでStudentと入力してください。 
-------------------------------------------------------------------------- 
Q7 
6. Common Name (eg, FQDN) [www.snakeoil.dom]: 
証明書を発行するための情報です。組織の通称を入力してください。 

A7 
特に通称はないのでそのままリターンキーを押してください。 
-------------------------------------------------------------------------- 
Q8 
7. Email Address (eg, name@FQDN) [www@snakeoil.dom]: 
証明書を発行するための情報です。メールアドレスを入力してください。 

A8 
あなたのメールアドレスを入力してください。 
-------------------------------------------------------------------------- 
Q9 
8. Certificate Validity (days) [365]: 
証明書の有効期限を入力してください。単位は日単位になります。 

A9 
3ヶ月有効にするため90と入力してください。 
-------------------------------------------------------------------------- 
Q10 
Certificate Version (1 or 3) [3]: 
証明書のバージョンを指定してください。 

A10 
バージョン3を使うので3を入力してください。 
-------------------------------------------------------------------------- 
Q11 
Encrypt the private key now? [Y/n]: 
証明書の暗号化を行いますか? 

A11 
行うのでyを入力してください。 
-------------------------------------------------------------------------- 

Q12 
Enter PEM pass phrase: 
4文字以上のパスワードを入力してください。 

A12 
適当なパスワードを入力してください。 
-------------------------------------------------------------------------- 
Q13 
Verifying password - Enter PEM pass phrase: 
パスワードを再入力してください。 

A13 
A12で入力したパスワードを再度入力してください。 
-------------------------------------------------------------------------- 

インストール

# make install

/usr/local/apacheにインストールされる。 /usr/local/apache/bin/apachectl が起動や終了のコマンドとなる。

ファイルインストールされたファイルのいくつかを説明する。

apache/bin/apachectlコマンド

引数説明
starthttpdの開始
startsslSSLを有効にしてhttpdの開始
stophttpdの終了
restarthttpdの再起動
fullstatushttpdの全ステータス表示を行う。lynxインストールされており、とmod_statusが必要
statushttpdのステータス表示を行う。lynxインストールされており、とmod_statusが必要
gracefuldo a graceful restart by sending a SIGUSR1 or start if not running
configtest設定ファイルにエラーがないかテストする
helpヘルプ画面

apache/conf/httpd.conf

Apacheの設定ファイル。モジュールの設定もこのファイルで行う。 かなり大きいファイルであり、全ての説明はできないが基本的に変更すべき箇所は少ない。 最低限変更すべきところのみ変更してみる。

# vi /usr/local/apache/conf/httpd.conf
// ServerName {マシン名}
      ↓
ServerName zz_dell5

実行

まずは設定ファイルのチェック。

# /usr/local/apache/bin/apachectl configtest

エラーが出ず、

Systax OK

と出力されればOK。

起動はSSLを使用するかしないかで方法が異なる。

通常起動

# /usr/local/apache/bin/apachectl start

を実行して

/usr/local/apache/bin/apachectl start: httpd started

と出力されればOK。

SSL起動

# /usr/local/apache/bin/apachectl startssl
Enter pass phrase:
// SSL起動のパスワードを聞かれるのでパスワードを入力し
Ok: Pass Phrase Dialog successful.
/usr/local/apache/bin/apachectl startssl: httpd started 

と出力されればOK。

SSL起動時にパスワード入力を省略する方法

# vi /usr/local/apache/conf/httpd.conf
// SSLPassPhraseDialog  builtin
// の行をコメントアウトして以下を入力する
SSLPassPhraseDialog  exec:/usr/local/apache/bin/ssl-password
#ファイルを保存する
------------------------------------------------------------
# echo "echo \"{パスワード}\"" > /usr/local/apache/bin/ssl-password
// {パスワード}部分をパスワードに置き換える
# chmod 700 /usr/local/apache/bin/ssl-password

確認してみる

# /usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl stop: httpd stopped
# /usr/local/apache/bin/apachectl startssl
/usr/local/apache/bin/apachectl startssl: httpd started
// パスワードを聞かれなかった

サービス化

Apacheをサービス化を参照。

ドキュメントルートの変更

Apacheの公開ディレクトリを変更する方法。 バックアップ対象として/pub/www以下をバックアップ対象にしている場合を想定。

  • コンパイル時点で公開ディレクトリの場所が決まっている場合はコンパイルオプションでの指定を推奨する。
  • インストール後に変更する場合はシンボリックリンクで変更する方法が楽。

/pub/wwwが存在しない場合

※パーミッションは用途に応じて適切な設定をする事。以下は/pubはkskグループ権限としている。

# mkdir /pub
# chgrp ksk /pub
# mkdir /pub/www

コンパイルオプションで指定する方法

Apache(mod_sslで指定)のconfigureで指定した場合は自動的にhttpd.confの内容が変更され、 htdocs等も指定場所にインストールされる。

httpd.confを変更する方法

 # vi /usr/local/apache/conf/httpd.conf

DocumentRoot "/usr/local/apache/htdocs"
//         ↓
DocumentRoot "/pub/www/htdocs"

<Directory "/usr/local/apache/htdocs">
//         ↓
<Directory "/pub/www/htdocs">

Alias /manual/ "/usr/local/apache/htdocs/manual/"
//         ↓
Alias /manual/ "/pub/www/htdocs/manual/"

<Directory "/usr/local/apache/htdocs/manual">
//         ↓
<Directory "/pub/www/htdocs/manual">

この様に/usr/local/apache/htdocsの部分を全て/pub/www/htdocsに変更する。 同様に

  • /usr/local/apache/icons
  • /usr/local/apache/cgi-bin も変更すればよい。 現在のドキュメントルートをコピーし再起動する。
    # cp -ar /usr/local/apache/htdocs /pub/www/
    # /etc/rc.d/init.d/httpd restart

シンボリックリンクで変更する方法

シンボリックリンクを使用すれば、httpd.confを変更せずにドキュメントルートを変更できる。

// サービスの停止
# /etc/rc.d/init.d/httpd stop
# cd /usr/local/apache
// pub/www以下に移動するディレクトリをmvで移動
# mv htdocs /pub/www
# mv icons /pub/www
# mv cgi-bin /pub/www
// 移動したディレクトリのシンボリックリンクを作成
# ln -s /pub/www/htdocs/ .
# ln -s /pub/www/icons/ .
# ln -s /pub/www/cgi-bin/ .

以上でhtdocsは

  • /usr/local/apache/htdocs
  • /pub/www/htdocs のどちらでもアクセス出来る。 実体は/pub/www/htdocsに存在するので/pub/wwwをバックアップすれば良い。 この方法ならhttpd.confを変更しなくてすむ。

Link

Windows版


添付ファイル: filemod_ssl-2.8.14-1.3.27.tar.gz 219件 [詳細] fileapache_1.3.27.tar.gz 217件 [詳細] fileopenssl-0.9.7b.tar.gz 224件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-07 (金) 16:01:32 (251d)