Apache

簡易認証局を使ったSSLサーバ構築記録

関連リンク

流れ

  1. OpenSSL導入
  2. mod_ssl導入
  3. Apache再構成
  4. PHP再構築
  5. 簡易認証局構築
  6. クライアント認証など

OpenSSLの導入

 別ページにあるので省略。

Apacheのソースアーカイブ展開

cd /usr/local/src
tar xfz apache_1.3.33.tar.gz

mod_sslの導入

cd /usr/local/src
tar xfz mod_ssl-2.8.22-1.3.33.tar.gz
cd mod_ssl-2.8.22-1.3.33
./configure --with-apache=/usr/local/src/apache_1.3.33

Apacheのコンパイル

makeまでだよ。make installまでじゃないよ。

cd /usr/local/src/apache_1.3.33
setenv SSL_BASE=/usr/local/ssl/
./configure --enable-module=ssl --prefix=/www --enable-module=so
make

テスト用証明書の作成

make certificate TYPE=test

質問がいくつか出てくるので答える。難しいものはないし、テスト証明書なので何でも良い (以下はサンプル)

1. Country Name (2 letter code) [XY]:JP
2. State or Province Name (full name) [Snake Desert]:Oita
3. Locality Name (eg, city) [Snake Town]:Oita
4. Organization Name (eg, company) [Snake Oil, Ltd]:Kaisya
5. Organizational Unit Name (eg, section) [Webserver Team]:Network
6. Common Name (eg, FQDN) [www.snakeoil.dom]:ssl.example.com
7. Email Address (eg, name@FQDN) [www@snakeoil.dom]:info@example.com
8. Certificate Validity (days) [365]:365

(中略)

STEP 3: Generating X.509 certificate signed by Snake Oil CA [server.crt]
Certificate Version (1 or 3) [3]:1

(中略)

STEP 4: Enrypting RSA private key with a pass phrase for security [server.key]
The contents of the server.key file (the generated private key) has to be
kept secret. So we strongly recommend you to encrypt the server.key file
with a Triple-DES cipher and a Pass Phrase.
Encrypt the private key now? [Y/n]: y

Enter PEM pass phrase:(パスフレーズ)  パスフレーズを入れる

Apacheインストール

make install

Apache設定

httpd.confの主な設定箇所は以下。ただし「とりあえず動く」レベル

SSLEngine On        SSLエンジン有効
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt サーバ証明書の場所
                    今回はテスト証明書で、かつ認証局の署名を受けていないものを
                    指定している(コンパイル時に生成される htttpd.conf.defaultは
                    この設定
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
                    サーバ秘密鍵の場所
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/ca-bundle.crt
                    認証局(CA)の署名を受けたサーバ証明書のパス
                    今回は上のテスト用サーバ証明書をそのまま利用した(CA署名を受
                    けていない)
SSLVerifyClient 0   クライアント認証レベルの設定
                       0:クライアント認証をしない
                       1:クライアント証明書不要(認証処理はするが証明書を要求しない)
                       2:クライアント証明書必須
                       3:クライアント証明書は不要だが、サーバ証明書もCA未署名の
                         ものを許す
SSLVerifyDepth 10   未調査・・・

起動は apachectl startsslとする パスフレーズ入力を省略する(自動入力にする)には httpd.confに以下のディレクティブを指定して、

SSLPassPhraseDialog exec:/usr/local/libexec/echo-passphrase
<echo-passphrase>----------
#!/bin/sh
echo "passphrase-string"
-------------------------

とすれば良い

PHPがあるならPHPも再構築


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS