petitviolet_blog

@petitviolet blog

.htpasswdと.htaccessの設定

webページの認証について

.htaccessと.htpasswdを編集する

.htpasswd
su -
htpasswd -c /etc/httpd/conf/.htpasswd hogehoge
# パスワードを2回求められるので入力
cat /etc/httpd/conf/.htpasswd
hogehoge:xxxxxxxxxxxxxx  # 暗号化されている

これで.htpasswdの用意終わり

.htaccess
cd [公開したいファイルのあるディレクトリ]
vim .htaccess
# 以下の内容を書く
Options +ExecCGI
AddHandler cgi-script .cgi .py htpasswd
AddType application/x-httpd-php .php .html
AuthUserFile /etc/httpd/conf/.htpasswd
AuthName "Member Only" # ダブルクォーテーションで囲む
AuthType Basic
Require valid-user

phpで記述してあるhtmlファイルをphpで動作させることが出来る設定でもある。
pythonをCGIも使える、はず(試してない)
AddHandlerにhtpasswdを追加しているのはセキュリティの向上のため。
どっかで見たのだがどこか探しだせなかった。すみません。
これで.htaccessも終わり。

sudo service httpd restart

を忘れない。

エラーログ

自分で公開したいアドレスを開いて認証を試みるも失敗する時

sudo tail -f /etc/httpd/log/error_log

としてエラーを見ると

access to /index.html failed, reason: verification of user id "hogehoge" not configured

と出ている場合、httpd.confで読み込んでいるモジュールが足りないといったことがある

httpd.conf

認証に関係ありそうっぽいところだけ抜粋
必要なモジュールをコメントアウトしてると認証してユーザー名とパスワードが合っていても認証出来ないといったことがあります。

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
おわり

LoadModuleに悩まされるとは思わなかった。
これでまだ公開できないWebページのテストが出来るね!