.htaccessとBasic認証とDigest認証

.htaccessを有効にし、
DirectoryIndexを指定する

cat ファイル | grep -A 1000 ‘開始文字列’ | grep -B 1000 -m 1 ‘終了文字列’ # UUOC
とすれば、非貪欲に(?)欲しい部分だけ取ってくれる。とても便利。

# 設定ファイルのバックアップ
cp -a /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

# .htaccessを使えるように[AllowOverride]を書き換える
cat /etc/httpd/conf/httpd.conf | grep -A 1000 '<Directory "/var/www/html">' | grep -B 1000 -m 1 '</Directory>'
<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

# AllowOverride All等に書き換える
vim /etc/httpd/conf/httpd.conf

# AllowOverrideが書き換わってるか確認
cat /etc/httpd/conf/httpd.conf | grep -A 1000 '<Directory "/var/www/html">' | grep -B 1000 -m 1 '</Directory>'
<Directory "/var/www/html"> | grep AllowOverride
    AllowOverride All

# index.html以外のファイル名でアクセス可能にする
# DirectoryIndexで指定する
vim .htaccess

# top.htmlでアクセス可能になる
cat .htaccess 
DirectoryIndex top.html

# ブラウザでアクセスするなり、curlするなりで確認
curl localhost
# -> Apacheのテストページなどが表示される

# 適当なhtmlを記述する
vim top.html

# 壊れたhtmlでも気にしない
cat top.html
i am top.html

# apache再起動
/etc/init.d/httpd restart

# ブラウザでアクセスするなり、curlするなりで確認
curl localhost
# -> i am top.html になり、index.html以外でアクセスできることを確認できる

 

htpasswdコマンドをためす

まずはhtpasswdコマンドで認証用のファイルを作る

# モジュールが有効か確認
httpd -M | grep auth | grep -e basic -e digest
Syntax OK
 auth_basic_module (shared)
 auth_digest_module (shared)

# .htpasswdファイルを新規で作成する
# パスワードはpiyopassで作成される(ヒストリーに残るので危険)
htpasswd -c -b /etc/httpd/conf/.htpasswd hogeuser piyopass
Adding password for user hogeuser
cat /etc/httpd/conf/.htpasswd
hogeuser:uCyz14O48E4u2

# 新規で作成するので上書きされる
htpasswd -c -b /etc/httpd/conf/.htpasswd foouser barpass
Adding password for user foouser
cat /etc/httpd/conf/.htpasswd
foouser:7O5VSh2qgE8z6

# 元からあるファイルに追記される
htpasswd -b /etc/httpd/conf/.htpasswd spamuser hampass
Adding password for user spamuser

# 追記されてる
cat /etc/httpd/conf/.htpasswd
foouser:7O5VSh2qgE8z6
spamuser:wxFGe6Ar5tMrE

# -b でパスワードを指定せず、対話式で入力する(ヒストリーにも残らないの安心)
htpasswd -c /etc/httpd/conf/.htpasswd blauser
New password: # blubpass
Re-type new password: # blubpass
Adding password for user blauser

# 確認
cat /etc/httpd/conf/.htpasswd
blauser:t/RXyFZI/UV.w

 

Basic 認証をためす

AuthUserfile は htpasswd で作成したファイルを指定する。

# .htaccessを編集し、Basic認証を有効にする
vim /var/www/html/.htaccess

# 設定を確認
cat /var/www/html/.htaccess
DirectoryIndex top.html
AuthUserfile /etc/httpd/conf/.htpasswd
AuthGroupfile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user

 

Basic認証できたら、このように確認してくる。

Digest認証をためす

Basic認証とほぼ同じ方法でできる。
また、htpasswd と違い、-bオプション等は存在しない。

# htdigestコマンドでAuthUserfileを作成
htdigest -c '/etc/httpd/conf/.htdigpas' 'Digest Auth' hogeuser
Adding password for hogeuser in realm Digest Auth.
New password:
Re-type new password:

# 作成されたファイルを確認
cat /etc/httpd/conf/.htdigpas
hogeuser:Digest Auth:7f582bfbc0df4370cd43ab8c241e602e

# .htaccessを編集し、Digest認証を有効にする
vim .htaccess

# 設定を確認
cat .htaccess
DirectoryIndex top.html
AuthUserfile /etc/httpd/conf/.htdigpas
AuthGroupfile /dev/null
AuthName "Digest Auth"
AuthType Digest
Require valid-user

 

参考情報群:
.htaccess
http://www.uetyi.com/server-const/entry-570.html
https://ex1.m-yabe.com/archives/2467

Basic認証
https://issus.me/projects/971/issues/18
https://qiita.com/yamamotoshu1127/items/d72aa5d8786fe19f26ff
https://qiita.com/toshiya/items/e7dcc7610b15884b167e

コメント

タイトルとURLをコピーしました