LoginSignup
8
6

More than 3 years have passed since last update.

Lightsail|WordPress - bitnami|BASIC認証とDigest認証の設定方法

Last updated at Posted at 2020-09-03

プロローグ

AWSのLightsailでWordPress(by Bitnami)を立ち上げました。
私のセキュリティ対策の一つとしてwp-login.phpのファイルへBASIC認証をかけているのですが、他社レンタルサーバーでやっている普段の通りの方法では、うまくできなかったので、課題となりました。本稿は、その課題の解き方です。

Lightsail で WordPress のある場所(ディレクトリ)

まず、WordPressがあるディレクトリの確認です。

ssh-terminal
$ cd /opt/bitnami/apps/wordpress/htdocs

htdocsディレクトリ下にWordPressのファイル群があります。

image.png

WordPressのファイル群に .htaccess を入れてもダメ

私は普段、wp-adminwp-login.phpのある階層に.htaccessを置いてBASIC認証をかけていましたが、この方法はAWSのLightsailでは不可のようです。

image.png

参考サイト:AWS LightsailのWordPressにBasic認証を設定する

BASIC認証の導入手順

手順は
1. /opt/bitnami/apps/wordpress/conf.htpasswd を置く
2. 同ディレクトリにあるhtaccess.confに追記する
3. Apacheを再起動する
です。

1) .htpasswd の作成

ssh-terminal
$ cd /opt/bitnami/apps/wordpress/conf
$ htpasswd -c .htpasswd user123  # htpasswd -c "ファイル名" "ユーザー名"

/opt/bitnami/apps/wordpress/confディレクトリへ移動し、htpasswdコマンドで.htpasswdファイルを生成しています。

.htaccess による認証用 パスワード暗号化ツール などを使って、手動で.htpasswdファイルを作成し、/opt/bitnami/apps/wordpress/confへアップしてもOKです。

image.png
image.png

2) htaccess.conf へ追記

ssh-terminal
$ cd /opt/bitnami/apps/wordpress/conf
$ vi htaccess.conf

/opt/bitnami/apps/wordpress/confディレクトリ内にあるhtaccess.confファイルに追記します。

image.png

/opt/bitnami/apps/wordpress/conf/htaccess.conf
# BASIC認証の追加
<FilesMatch "^wp-login\.php$">  # wp-login.php ファイルの指定
    AuthType Basic
    AuthName "Basic Auth"
    AuthUserFile /opt/bitnami/apps/wordpress/conf/.htpasswd  # .htpasswd のパスを間違えないように!
    AuthGroupFile /dev/null
    Require valid-user
</FilesMatch>

image.png

3)Apacheを再起動

ssh-terminal
$ sudo /etc/init.d/bitnami restart apache

このコマンドで Lightsail の Apache を再起動できます。

image.png

再起動後に WordPress のログイン画面(wp-login.php)へアクセスし、BASIC認証が掛かっていれば成功です。

Digest認証の導入手順

BASIC認証とDigest認証の違いは、サーバーへ平文で送信するか暗号化して送信するか、の違いのようです。BASIC認証でもSSL化していれば問題ないと思いますが、Digest認証の導入でも1工程多いだけなので、どうせならDigest認証を採用してもいいのではないでしょうか?

手順は
1. Digest認証を使えるようにhttpd.confを一部変更
2. .htpasswdファイルの作成
3. htaccess.confへ追記
4. Apacheを再起動

です。(2)〜(4)は、BASIC認証とほぼ同じです。

1) httpd.conf の一部変更

ssh-terminal
$ vi /opt/bitnami/apache2/conf/httpd.conf

Lightsail の Apache はデフォルトでDigest認証がONになっていません。
/opt/bitnami/apache2/conf/httpd.confファイルのDigest認証部のコメントアウトを外します。
86行目あたりにLoadModule auth_digest_module modules/mod_auth_digest.soがコメントアウトされています。#を外して保存します。

image.png
image.png

2) .htpasswd の作成

ssh-terminal
$ cd /opt/bitnami/apps/wordpress/conf
$ htdigest -c .htpasswd "Digest Auth" user123  # htdigest -c "ファイル名" "realm(領域)" "ユーザー名"

/opt/bitnami/apps/wordpress/confディレクトリへ移動して、ココに.htpasswdを作成します。
Digest認証の場合はhtdigestコマンドです。
Digest認証の場合は"realm(領域)"を入れないといけません(上記例では"Digest Auth"の部分)。この文字列は、後ほどに使うので、どこかにコピペしておいてください。

image.png
image.png
↑ ユーザー名とパスワードの他に、Digest Auth という文字列(realm)が確認できますね

3) htaccess.conf へ追記

ssh-terminal
$ cd /opt/bitnami/apps/wordpress/conf
$ vi htaccess.conf

/opt/bitnami/apps/wordpress/confディレクトリ内にあるhtaccess.confファイルに追記します。
AuthNameには、先程の"realm(領域)"と同じ文字列を入れます(上記例では"Digest Auth"

image.png

/opt/bitnami/apps/wordpress/conf/htaccess.conf
# Digest認証の追加
<FilesMatch "^wp-login\.php$">  # wp-login.php ファイルの指定
    AuthType Digest
    AuthName "Digest Auth"  # ココへ先程のrealm(領域)のテキストを入れる
    AuthUserFile /opt/bitnami/apps/wordpress/conf/.htpasswd  # .htpasswd ファイルへのパスを間違えないように注意!
    Require valid-user
</FilesMatch>

image.png

4)Apacheを再起動

ssh-terminal
$ sudo /etc/init.d/bitnami restart apache

このコマンドで Lightsail の Apache を再起動できます。

image.png

再起動後に WordPress のログイン画面(wp-login.php)へアクセスし、Digest認証が掛かっていれば成功です。

いやいや.htaccessを使いたいねん

本稿ではhtaccess.confを変更してBASIC認証/Digest認証を実装する方法を記載しました。

しかし、「いやいや.htaccessを使いたいねん」「.htaccessの方が使い慣れてるねん」という方もいらっしゃるのではないでしょうか(私がそうなので)

そんな方へ...

Lightsail|WordPress - bitnami|.htaccessを有効化する方法

ぜひ、↑こちらもあわせてご覧ください。

関連記事

【初心者】AWSのlightsailでWordPressを導入するまで

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6