|
このページはApacheのユーザー認証について、私が過去に経験があるものをまとめてみました。
ここに書かれていることはApacheが完全に動作するのが前提条件です。そのつもりでお願いします。
自作スクリプトも置いてます。ご自由にお使いになるのはかまいませんが、あくまで自己責任でお願いします。何か問題があっても私は一切の責任は負いませんので、そのつもりでね。
ベーシック認証
暗号化認証
暗号化認証とは言っても、Linux+Apache+modSSLの環境では難しくありません。上記ベーシック認証と同じ手法で暗号化認証できす。
ただし、「.htaccessによるユーザー認証」「MySQLを使ったデータベース認証」では80番ポートでも認証できてしまうため、80番ポートを拒否する仕組みが必要となります。
この場合、443ポートへアクセスしたときだけ認証されるように、DocumentRootの設定を工夫してください。
PHPスクリプトを使った認証ではスクリプトで80番ポートからの接続を拒否するようにすればOKですね。
以下にVineLinuxでmod_sslを利用する方法を書きます(たぶん、redhatなどでも同様の操作で利用できると思います)。この作業はすべてrootで行ってください。
-
rootになります。
su -
-
mod_sslのインストールを行います。
VineLinuxでは、「apt-get install mod_ssl」でインストールしてください。他のデストリビュージョンではrpmをインストールしてください。
-
秘密鍵の生成を行います。
cd /etc/httpd/conf
make server.key
Enter PEM pass phrase: パスフレーズの入力
Verifying password - Enter PEM pass phrase: パスフレーズの再入力 |
-
秘密鍵からパスフレーズを削除します。
openssl rsa -in server.key -out server.key
Enter PEM pass phrase: パスフレーズの入力 |
-
CSRの生成を行います。(CSRとは、サイト証明書を発行してもらうためのデータです)
make server.csr
Country Name (2 letter code) [AU]:JP ←国を入力
State or Province Name (full name) [Some-State]:Mie ←都市を入力
Locality Name (eg, city) []:Kuwana ←町を入力
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tsuttayo ←会社名などを入力
Organizational Unit Name (eg, section) []: ←必要ない
Common Name (eg, your name or your server's hostname) []:tsuttayo.sytes.net ←アドレスを入力
Email Address []:sg@tsuttayo.sytes.net ←メール・アドレスを入力
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←必要ない
An optional company name []: ←必要ない |
-
出来上がったserver.csrをベリサインなどの認証局に送るとサイト証明書が発行されます。これをserver.pemなどの名前で保存します。
もしも認証局を使わずに、自分で署名する場合は次のようにします。
openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365 |
-
Apacheの設定を行います。httpd.confに以下の行があると思います(コメントになっていると思います)ので、コメントをはずして設定します。
SSLCertificateFile /etc/httpd/conf/server.pem
SSLCertificateKeyFile /etc/httpd/conf/server.key |
-
DocumentRootの設定を変える場合は、次の行を探して変えてください。
<VirtualHost _default_:443>
DocumentRoot SSLでアクセスしたときのDocumentRoot |
-
Apacheを再起動します。
/etc/rc.d/init.d/httpd restart |
これで設定完了です。https://でアクセス可能か確認してみましょう
|