LightsailインスタンスにDigest認証を設定してみた
まず、digest.took.jpを作成し、「Hello world」を表示するページを作成。
その後、そのページにDigest認証をかけたいと思います。
新規ページを作成
ディレクトリを作成。
mkdir /home/bitnami/apps/digest
mkgir /home/bitnami/apps/digest/htdocs
mkdir /home/bitnami/apps/digest/conf
公開するファイルを作成。
vi /home/bitnami/apps/digest/htdocs/index.html
<h1>Hello world!</h1>
Lightsail管理画面ネットワーキングのDNSゾーンよりAレコードを設定。
SSL証明書を作成。
sudo /opt/bitnami/ctlscript.sh stop apache
sudo apt-get install -y letsencrypt certbot python-certbot-apache
sudo certbot certonly --standalone -t
httpd-app.confを作成。
vi /home/bitnami/apps/digest/conf/httpd-app.conf
<Directory "/opt/bitnami/apps/digest/htdocs">
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
httpd-vhosts.confを作成。
vi /home/bitnami/apps/digest/conf/httpd-vhosts.conf
<VirtualHost *:80>
ServerName digest.took.jp
ServerAlias www.digest.took.jp
DocumentRoot "/opt/bitnami/apps/digest/htdocs"
Include "/opt/bitnami/apps/digest/conf/httpd-app.conf"
</VirtualHost>
<VirtualHost *:443>
ServerName digest.took.jp
ServerAlias www.digest.took.jp
DocumentRoot "/opt/bitnami/apps/digest/htdocs"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/digest.took.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/digest.took.jp/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/digest.took.jp/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/digest.took.jp/fullchain.pem
Include "/opt/bitnami/apps/digest/conf/httpd-app.conf"
</VirtualHost>
新規サイト用のv-hostsのincludeを設定を追加。
vi /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf
Include '/opt/bitnami/apps/digest/conf/httpd-vhosts.conf'
これで新規サイトの追加が完了。
サイトにアクセスすることで、「Hello world」の表示が確認できたかと思います。
Digest認証を設定
digest認証用のモジュール読み込みを設定する。
vi /opt/bitnami/apache2/conf/bitnami/httpd.conf
以下を追記。
LoadModule auth_digest_module modules/mod_auth_digest.so
Digest認証のユーザ名「admin」パスワード「password」に設定します。
sudo htdigest -c /path/to/.digestpass "Digest Auth" admin
New password: 任意のパスワード
Re-type new password: 再度パスワードを入力
httpd-app.confの内容を変更。
vi ~/apps/digest/conf/httpd-app.conf
<Directory "/opt/bitnami/apps/digest/htdocs">
Options Indexes FollowSymlinks
AllowOverride All
#Require all granted
AuthType Digest
AuthName "Digest Auth"
AuthUserFile "/path/to/.digestpass"
Require valid-user
</Directory>
これで設定が完了です。
サイトにアクセスすると、以下のようにDigest認証のフォームが表示されるかと思います。
なぜDigest認証を使用するのか
Digest認証(ダイジェストにんしょう)とは、HTTPの認証方法(HTTP認証)の一つ。ユーザ名とパスワードをMD5でハッシュ(ダイジェスト)化して送る。Basic認証では防げなかった盗聴や改竄を防ぐために考案された。
Basic認証では、盗聴や改竄される可能性が高いため、Digest認証を使用します。