Apacheに暗号通信機能を追加するためのApache-SSLのパッチを当てたサーバです。 Apache-SSLは SSL ライブラリを呼び出しますが、このSSLライブラリには ここではOpenSSLを使います(SSLeayでも可能と思います) (このOpenSSLには暗号通信のキーの作成などにも使います)mod_sslを使う場合には、以下の手順や設定が 異なりますのでご注意ください
ソースアーカイブ名
- apache_1.3.12.tar.gz (httpサーバ)
- apache_1.3.12+ssl_1.39.tar.gz (上記のサーバに当てるSSLパッチ)
- openssl-0.9.6.tar.gz (SSLライブラリ、ツール)
導入環境
- FreeBSD 3.3-RELEASE
インストール
OpenSSLのインストール
OpenSSLはSSLのライブラリです。SSL 機能付き Apache は SSL 通信を行う際に このライブラリを使って、暗号化、復号を行います。makeするには以下のコマンドを実行します。
% tar zxvf openssl-0.9.6.tar.gz % cd cd openssl-0.9.6 % ./config % make % make test # make installApacheとApache-SSLのインストール
ApacheをSSL対応にするために Apache-SSLをパッチとしてあてて、 makeする% tar zxvf apache_1.3.12.tar.gz % cd apache_1.3.12 % tar zxvf apache_1.3.12+ssl_1.39.tar.gz % patch < SSLpatch % configure --prefix=/usr/local/apache_sslここでapache_1.3.12/src/Configurationを以下のように編集するKEYNOTE_BASE=/usr/local/ssl/KeyNote SSL_BASE=/usr/local/ssl SSL_INCLUDE= -I$(SSL_BASE)/include SSL_CFLAGS= -DAPACHE_SSL SSL_LIB_DIR= $(SSL_BASE)/lib SSL_LIBS= -L$(SSL_LIB_DIR) -lssl -lcrypto SSL_APP_DIR= $(SSL_BASE)/bin SSL_APP=/usr/local/ssl/bin/opensslこの後コンパイルする% cd apache_1.3.12/src % ./Configure % makeインストールする# mkdir /usr/local/apache_ssl # sh # for i in cgi-bin conf htdocs icons logs > do cp -r $i /usr/local/apache_ssl > done # exit # mkdir /usr/local/apache_ssl/bin # cp src/httpsd /usr/local/apache_ssl/bin # cp src/modules/ssl/gcache /usr/local/apache_ssl/bin # cp conf/httpd.conf-dist /usr/local/apache_ssl/conf/httpd.conf # cat SSLconf/conf/httpd.conf >> /usr/local/apache_ssl/conf/httpd.conf # mkdir /usr/local/apache_ssl/certs/usr/local/apache_ssl/conf/httpd.confの編集
ここではとくにSSLのdirectiveについて、記述する。 directiveについては、htdocs/manual/の下にあります。 日本語マニュアルは こちらを参照してください。
変更前 変更後 "@@ServerRoot@@"(数箇所あるのですべて書き換える) "/usr/local/apache-ssl" ServerAdmin ServerAdmin root@kitakyu-techno-ctr.co.jp ServerName ServerName hibiki.kitakyu-techno-ctr.co.jp (最初の)Port 80 #Port 80(コメントアウト)(後の方にPort 8887があるので) User ben コメントアウト Group ben コメントアウト Port 8887
Listen 8887
Listen 8888Port 443
Listen 443DocumentRoot... DocumentRoot /usr/local/apache_ssl/htdocs SSLCACertificatePath... SSLCACertificatePath /usr/local/apache_ssl/certs SSLCertificateFile... SSLCertificateFile /usr/local/apache_ssl/certs/httpsd.pem SSLCacheServerPath... SSLCacheServerPath /usr/local/apache_ssl/bin/gcache AllowOverride None(何箇所かある:.htaccessでの制限に必要) AllowOverride AuthConfig Limit Certificate Fileの作成
ここでは自己署名型の証明書を使う例を説明します。PEM形式の認証ファイルを作成し、それをhttpd.conf のSSLCertificateFile で指定した位置にそれを置きます。
# cd /usr/local/apache_ssl/certs # /usr/local/ssl/bin/openssl req -new -x509 -nodes -out httpsd.pem -keyout httpsd.pem ... ... ... Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Fukuoka Locality Name (eg, city) []:Kitakyushu Organization Name (eg, company) [Internet Widgits Pty Ltd]:Kitakyushu Technology Center Organizational Unit Name (eg, section) []:Kitakyushu Industrial Information Cent er Common Name (eg, YOUR name) []:hibiki Email Address []:root@kitakyu-techno-ctr.co.jp #これによって httpsd.pem がカレントディレクトリにできます。 このファイルは秘密キーと証明書が含まれています。 有効期限などが含まれていますし、安全のためにも定期的に このファイルは上記のコマンドで作り直す方がよいと思われます。
起動
/usr/local/apache_ssl/bin/httpsd -f /usr/local/apache_ssl/conf/httpd.confあるいはapachectlの内容が HTTPD='/usr/local/apache_ssl/bin/httpsd' となっていることを確認してから、以下のように起動する/usr/local/apache_ssl/bin/apachectl start
付録
クライアント認証を行うためのhttpd.confの設定
- SSLVerifyClient 2
0 認証しない 1 クライアントは信頼されているCAからの証明書を提示して認証を受けることができる 2 クライアントは信頼されているCAからの証明書を提示しなければならない 3 クライアントは証明書を提示して認証を受けることができるが、 サーバに信頼されているCAからの証明書でなくてもよい - SSLCACertificatePath
クライアント認証をする際に、受け入れるクライアント証明書を発行する 認証局の証明書を格納するディレクトリ。この項目の代わりに SSLCACertificateFileで証明書ファイルを指定することで、 特定の認証局によって発行されたクライアント証明書のみを 受け入れることも可能です。以上の設定を行って、このサーバにアクセスするブラウザに クライアントの証明書を組み込めばアクセスできるようになります。
参照リンク
「サーバの構築」のページへ戻る ホームへ戻る