[Debian][Apache] Apache2でSSL(https)を使用する
Debian(Etch) にて Apache2でSSLを使用できるようにする。
https(HTTP over SSL)は通常は暗号化されていないWEBブラウジングを
暗号化して途中経路で盗聴されないようにするために使用される。
それにより例えばログインが必要なサイトにて入力したユーザID/パスワードが
途中経路で盗聴/記録がされても大丈夫なようにする。
注意点としては、これは途中経路での盗聴を防ぐためのものであって
WEBサイト自体が安全であることを保証するものではないことである。
また本来、
暗号化のキーはベリサインなどの企業から購入するのが普通であるが
ここではテスト/プライベート用に自分でキーを作ってみる。
まず、もちろんApache2のインストールと設定がされていることが必要。
ここでは先に書いた記事
[Debian] [Apache] Apache2のインストールと設定
の通りに設定されているものとする。
CGIを利用する場合においては
[Debian] [Apache] Apache2でCGIの実行
[Debian] [Apache] Apache2でmod_perlを使用する
の設定がされているものとする。
1.OpenSSLの設定
もしまだOpenSSLがインストールされていなければインストールする。
$ su - # aptitude install openssl
/etc/ssl/openssl.cnf を書き換える。
# cd /etc/ssl/ # cp openssl.cnf openssl.cnf.default # vi openssl.cnf
以下の部分を書き換える。
・・・ [usr_cert] ・・・ nsCertType = server コメントアウトを外して有効化する ・・・ [v3_ca] ・・・ nsCertType = sslCA, emailCA コメントアウトを外す
2.秘密鍵の作成
サイトの秘密鍵を作成する。
# cd /usr/lib/ssl/misc/ # ./CA.sh -newca CA certificate filename (or enter to create) このままEnter Making CA certificate ... Generating a 1024 bit RSA private key ................++++++ ..........++++++ writing new private key to './demoCA/private/./cakey.pem' Enter PEM pass phrase: パスフレーズを入力 Verifying - Enter PEM pass phrase: もう一度パスフレーズを入力 ----- (省略) ----- Country Name (2 letter code) [AU]: JPと入力 State or Province Name (full name) [Some-State]: Tokyoなど Locality Name (eg, city) []: 地域名(shibuyaなど) Organization Name (eg, company) [Internet Widgits Pty Ltd]: Enter Organizational Unit Name (eg, section) []: Enter Common Name (eg, YOUR name) []: WEBサーバー名 Email Address []: Enter Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: Enter An optional company name []: Enter Using configuration from /usr/lib/ssl/openssl.cnf Enter pass phrase for ./demoCA/private/./cakey.pem: またパスフレーズ
このままではApacheの起動の度にパスフレーズの入力を求められるのでパスフレーズを消す。
# openssl rsa -in demoCA/private/cakey.pem \ > -out demoCA/private/cakey.pem
3.証明書の作成
# openssl x509 -in demoCA/cacert.pem \ > -out demoCA/cacert.crt
4.秘密鍵と証明書をコピー
場所はどこでもいいのだけど
/etc/apache2/ssl/ 以下にコピーしておく
# cd /etc/apache2/ # mkdir ssl # cd ssl # cp /usr/lib/ssl/misc/demoCA/private/cakey.pem . # cp /usr/lib/ssl/misc/demoCA/cacert.crt .
5.Apache2のSSL設定ファイルの作成
ひな形があるのでそれを持ってきて編集する。
# cd /etc/apache2/sites-available/ # cp /usr/share/doc/apache2.2-common/examples/ \ > apache2/extra/httpd-ssl.conf.gz . # gunzip httpd-ssl.conf.gz # cp httpd-ssl.conf httpd-ssl.conf.default # vi httpd-ssl.conf
/etc/apache2/sites-available/httpd-ssl.conf
を以下のように、自分の環境に合わせて変更する。
| ・・・ <virtualhost サーバー名:443> ・・・ DocumentRoot "/home/www-data/public_html" ・・・ ServerName サーバー名:443 ・・・ SSLCertificateFile /etc/apache2/ssl/cacert.crt ・・・ SSLCertificateKeyFile /etc/apache2/ssl/cakey.pem ・・・ # CGIをSSLで使用する場合は以下の赤字の部分を変更/追加 <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> ScriptAlias /cgi-bin/ /home/www-data/cgi-bin/ <Directory "/home/www-data/cgi-bin"> <IfModule perl_module> SetHandler perl-script PerlHandler ModPerl::PerlRun PerlSendHeader On </IfModule> SSLOptions +StdEnvVars </Directory> |
6.SSLモジュールとSSLサイトの有効化
a2enmodとa2ensite コマンドで有効化してApache2を再起動する。
# a2enmod ssl # a2ensite httpd-ssl.conf # /etc/init.d/apache2 restart
無効化するときは、a2dismod, a2dissite を使う。
# a2dissite httpd-ssl.conf # a2dismod ssl # /etc/init.d/apache2 restart
ブラウザを起動して確認してみる。
https://サーバー名/ などでアクセスする。
開いたときに証明書に関する警告が出て、正常に見れればOK
/var/log/apache2/error_log などのログを見てエラーが起こっていないかも見ておく。
以上。
-----
参考記事:
Debian etchでSSL - よしだメモ
Apache/SSL(http)対応にする(Debian Etch編) - 俺の基地
-----
2008/12/28:体裁整え直し
トラックバック(0)
このブログ記事を参照しているブログ一覧: [Debian][Apache] Apache2でSSL(https)を使用する
このブログ記事に対するトラックバックURL: http://www.net-phantom.jp/mt/mt-tb.cgi/76

コメントする