
Last update 2003.07.12
もくじ?
Apache は httpd.apache.org で開発されています。
Apacheは、最新版が1.3.27である。 2.0.47もあるけど、まだ試していない。
mozilla.gr.jpの運用でApacheの設定をしてみたので、適度にメモしておこうかな。 
  自サーバも設定した。 
つくりかた
./configure --enable-module=so 
make 
make install 
/usr/local/apache 配下にインストールされる。
ファイル一覧| local | Vine | ||
| apxs | bin/apxs | /usr/sbin/apxs | インストール的拡張 | 
| httpd.conf等 | conf/ | /etc/httpd/conf/ | 設定ファイル | 
| logs/ | /etc/httpd/logs/ | ログファイル | 
必要になる知識
NameVirtualHost 192.168.0.1 <VirtualHost 192.168.0.1> ServerName www.siisise.net DocumentRoot /http/www/ ErrorLog logs/siisise-error_log CustomLog logs/siisise-access_log </VirtualHost> <VirtualHost 192.168.0.1> ServerName www.example.com DocumentRoot /http/example/ </VirtualHost>
のように書きます。 
ApacheのMLを見ていると、IPアドレスを入れるところにサーバ名を書いて、できませんと言っている人が多いですね。
ContentType: text/html; charset=Shift_JIS 
などという設定が標準でできるようにはならないだろうか? 
ある指定をして、拡張子を.html.ja とすると、日本語のドキュメントであることが指定でき、.html.en などの他の言語のドキュメントと自動判別させることができる。 
  
これには落とし穴があり、HTTP/1.1ではデフォルトの指定が存在しない。そのために、ブラウザで指定されない言語を指定していると、ファイル選択のWebページが表示されてしまう。 
言語の他に、文字コードも指定ができる。
html.ja.euc 
  html.en 
html 
この3つの拡張子のファイルを作った場合、htmlのファイルしか参照しない。 htmlファイルが完全に一致してしまわないように、html. と最後にピリオド.をつけるのがよい。
他に
html.ja.euc 
  html.en 
  html.euc 
としてみると、言語指定のある場合はそれぞれの言語のhtmlを、言語指定のない場合は、文字コードのみ指定されたhtmlを参照してくれる。 
全て準備しないと該当するものがないといわれてしまう事もある。
文字コードとしては、euc-jp、Shift_JIS、ISO-2022-JP の他にも UTF-8、UCS-2といったところを準備しておけば、完璧ではないだろうか?
SSLは、Webサーバなどで暗号化をする機能というか、あれです。
 SSLを利用するには、Apache+SSLや mod_ssl、Apache-SSLを利用する方法があるらしい。 
    今回は、ソースコードからコンパイルする環境があるので、mod_sslを利用してみる。 
必要なソフトは、 
  Apache 1.3.27 (それ以下はセキュリティホールあり)
  OpenSSL 
  mod_ssl 2.8.11_1.3.27
である。
opensslはrpm でもよいので事前にインストールしておこう。 
  Vine等には入っている。
  makeする場合は 
# tar zxvf openssl-0.9.6b.tar.gz 
  $ cd openssl-0.9.6b 
  # ./config 
  # make 
  # make test 
  # make install 
    /usr/local/ssl にインストールされるのかな? 
    rpmだと、/usr にインストールされるようだ。
Apacheを適当なディレクトリに解凍する。
$ tar zxvf apache-1.3.27.tar.gz $ tar zxvf mod_ssl-2.8.11_1.3.27.tar.gz $ cd mod_ssl-2.8.11_1.3.27 $ ./configure --with-apache=../apache_1.3.27/ --prefix=/usr/local/apachessl --with-ssl=/usr/local/ssl --enable-module=so (付けてOK?) その他オプションいろいろ
一度、ここで止まってしまい悩んだ。 
  APACI failed 
  APACIとはなんだろう? 
  OpenSSLをインストール済みの場合は、--with-ssl=/usr (VineLinuxの場合) でよいようです。 
opensslもソースコードからmakeしてる解説ばかりでわからんかった。
cd ../apache_1.3.27 $ make $ make certificate TYPE=dummy にしてみた [R]: [] $ su # make install
libexpat が必要であるというエラーメッセージが表示される?
ApacheもOpenSSLもインストールされている場合。
# tar zxvf mod_ssl-2.8.11-1.3.27.tar.gz # cd mod_ssl-2.8.11-1.3.27 # ./configure --with-apxs=/usr/local/apache/bin/apxs --with-ssl=/usr/local/ssl
  ApacheにEAPIがないよってエラーが出た。なんだろう。
Apache のモードが違うらしい・・・
http://siisise.net/linux/apache.html
の EAPI がエラーになる件は
--enable-rule=EAPI --enable-module=all --enable-shared=max なんてすると EAPI が有効になりますよ。
ただし、全部の module がコンパイルされたりしますけど。
というコメントを誰かから頂いた
秘密な鍵をつくるのだっ
安全な通信をするには、暗号化が必要です。そのために、まず秘密鍵と公開鍵を使います。秘密鍵で暗号化したものは、公開鍵で読むことができます。公開鍵を使って暗号化したものは、秘密鍵で読むことができます。たぶん。
相手が本人である、ということが証明できれば、それで安全です。しかし、誰でも暗号化した文書と公開鍵をいっしょに配っていると、偽の相手である場合も、あるかもしれません。
そこで登場するのが証明書(cert?)というものです。
[PKIの基礎知識]で大体のことを知ってみてください。
Vine Linuxのインストール済みApacheでは、/etc/httpd/conf にいろいろとディレクトリがあります。
ここでは、秘密鍵と証明書があればいいでしょうか。どちらもDERではなくテキスト形式のPEMで保存されているようです。
インストールするもの
秘密鍵は ssl.key のなかに、証明書は ssl.crt の中に、ルートからの証明も同じところに入れます。
ルート認証局(CA)、中間CAなどのファイルは、1つのファイルにまとめておくことができます。
[しいしせねっと]