魔法使いのWebマーケティング

Webマーケティングで魔法をかける!

  • Home
  • SEO
  • WordPress
  • concrete CMS
  • サーバー
  • No-Code
  • 🍀自己紹介&実績
  • AIによる参照元つき高品質SEO記事作成ツールα版が完成🎉
  • お問い合わせ
  • Notionブログ(外部)
©2018〜2021 まほウェブ・魔法使いのwebマーケティング・魔法使いの道具箱
You are here: Home / サーバー / Basic認証が効かない5パターンの対処と.htacessファイル作成方法

Basic認証が効かない5パターンの対処と.htacessファイル作成方法

By Wizard-Nakata 投稿日: 2019年10月15日 最終更新: 2021年6月25日

Nakata
Nakata
こんにちは。WordPressやConcrete5を用いたweb制作・ディレクションを行っています、MK Wizard中田です。

制作中のサイトを先方へ確認してもらうために
一般には非公開の形で、サイトを設置することが必要な場合があります。

その場合に利用されるのが、Basic認証。
IDとパスワードを入力しないと、ブラウザ上からは閲覧できないというものです。

basic認証

以下では、BASIC認証が効かない場合にチェックしてほしい項目と
実際にConcrete5 + ConoHa VPSという環境で
Basic認証を設置した際の方法を記載します。

目次

  • BASIC認証が効かない場合の5つの大きな原因
  • ①前提: .htaccess活用によるBASIC認証ができるのは、ApacheのWebサーバーだけ
    •  
    • nginxでのBASIC認証の実装方法
    • 運用しているWebサーバーがApacheなのかnginxなのか分からない場合の調べ方
  • そもそものBasic認証のつけ方(Apacheの場合)
    • .htaccess(BASIC認証設定ファイル)の作り方
    • ②: .htaccessファイル内AuthUserFileに記述する「サーバーパス」は合っていますか?
    • ③: .htaccessファイルの最後には必ず空行を含み、文字コードはUTF-8(BOM無し)
    • .htpasswd(BASIC認証パスワードファイル)の作り方
  • .htaccessファイルについて詳細を解説
  • .htaccessファイルの設置場所について
  • ④: Basic認証が効かない場合には、httpd.conf(サーバー主設定ファイル)のAllowOverrideをチェック
  • ⑤: パーミッションを確認して、Apacheサーバーを再起動したら完了
  • WordPressでログイン画面にBASIC認証をかける方法。wp-adminだけでなくwp-login.phpにもアクセス制限を

BASIC認証が効かない場合の5つの大きな原因

まず、BASIC認証が効かない場合の原因としては、下の5つのケースが多いです。

  1. WebサーバーとしてApacheではなくnginxを利用している
  2. AuthUserFileで指定するpasswdファイルへの「サーバーパス」が誤っている
  3. 最終行に空行がない、文字コードがUTF-8以外になっている
  4. httpd.confサーバー設定ファイルでAllow Overrideによるオーバーライドを許可していない
  5. Apacheサーバーを再起動していないため、.htaccessファイルが読み込まれていない

以下から、①〜⑤として、上記5通りのそれぞれについて解説していきます。
途中、そもそものBASIC認証のつけ方についても基礎から説明。

①前提: .htaccess活用によるBASIC認証ができるのは、ApacheのWebサーバーだけ

.haccessを利用したBASIC認証は、WebサーバーがApacheである場合だけです。
nginxを利用している場合には、.htaccessではなく他の方法でBASIC認証を実装する必要があります。

 

nginxでのBASIC認証の実装方法

nginxによるBASIC認証の実装については、下記の記事を参考にしてください。

Nginx で Basic 認証 – Qiita
[Linux] Nginx に Basic 認証を設定する方法 │ TEAM T3A

運用しているWebサーバーがApacheなのかnginxなのか分からない場合の調べ方

ターミナルより運用サーバーにSSH接続等でログイン後

sudo netstat -untap|grep 80

上記のコマンドを実行。

として出てくる文字列の末尾がhttpdだったらapacheで、nginxだったらnginx、出力が無ければどちらも80番ポートでは起動していないという感じになります。

Apache – パソコンで起動中のサーバを確認する方法|teratail

あるいは、80番または443番ポートをLISTENしているプロセスを調べる方法も。

$ sudo /usr/sbin/lsof -Pn -i tcp:80

サーバ上で動いているWebサーバを特定する方法 | CentOS | daily memorandum 3.0.0

そもそものBasic認証のつけ方(Apacheの場合)

まず、Basic認証を行うためのファイル設定方法について。
.htaccessファイルと、.htpasswd(パスワードファイル)の2つが必要となります。

.htaccess(BASIC認証設定ファイル)の作り方

.htaccessファイルには、以下のように記述。
不可視ファイルのため、 ローカルでファイル先頭に . (ドット)を付けられない方は
ファイル名をhtacesssにしたうえで以下を記述、サーバーにアップロードした際にファイル名の先頭に . を付けて名前を変更してください。

下記、ソースコード含めてこちらのサイトから引用しています。
.htaccessでBasic認証の設定をする方法 | てらこや.work
大変丁寧に解説されておりました。ディレクトリ単位ではなくファイル単位でBASIC認証をかける方法についても記載あり。ご参照ください。

— 引用ここから —

<Files ~ "^\.(htaccess|htpasswd)$">
Deny from all
</Files>
AuthType Basic
AuthUserFile /home/foo/html/.htpasswd
AuthName "Please enter your ID and password"
Require valid-user

1〜3行目は、.htaccessファイルと.htpasswdファイルを外部からアクセスできないようにしています。正規表現なので、もっと簡易的に <Files ~ “^\.ht”> と書いてもいいのですが、わかりやすさ優先で。
 
4行目以下のディレクティブ設定は以下の通り。
 
ディレクティブ 説明
AuthType BASICを指定すると基本認証
AuthUserFile パスワードファイル名
AuthName 認証名(認証ウィンドウの表示)
Require 認証ユーザー(valid-user : ファイルに書かれた全ユーザー)

— 引用ここまで —

WordPressを利用している場合でWordPressのインストールディレクトリに設置する場合、もともと.htaccessファイルが生成されていると思いますので、その.htaccessファイルに追記する形で記述しましょう。
その際、上記コードは #BEGIN WordPress よりも前に記述をしてください。#BEGIN WordPress より下に記述をすると、アップデートの際などに書き換えられてしまう可能性があります。

ほか参考: いまさらながら、Basic認証のつけかた – Qiita

②: .htaccessファイル内AuthUserFileに記述する「サーバーパス」は合っていますか?

.htaccessファイル内、AuthUserFileには” /サーバーのパス/.htpasswd ” として、パスワードファイルの設置先パスを記述する必要があります。

上記ソースコードでは5行目

AuthUserFile /home/foo/html/.htpasswd

の部分。ここはサイト表示のURLとは異なり、”サーバーパス”である必要があります。
下記手順などで必ずサーバーパスを確認してから記述するようにしてください。

サーバーパスはサイトのURLとは違います。以下の内容を例えば test.php などの名前をつけて、BASIC認証をかけたいサーバーのディレクトリにアップロードしてください。

<?php
echo __FILE__;
?>

アップロードしたら、Chromeなどのブラウザでそのファイルにアクセスします。アップロードしたサーバーの公開URLが vektor-inc.co.jp ならば、vektor-inc.co.jp/test.php にアクセスすると、そのサーバーパスが表示されるのでメモ帳などにコピーしておきます。

サイト全体にBASIC認証をかける方法 | 株式会社ベクトル

特に500エラーが出る場合には、このサーバーパスが異なっていることが多いです。
きちんと確認をして記述するようにしましょう。

③: .htaccessファイルの最後には必ず空行を含み、文字コードはUTF-8(BOM無し)

.htaccess の文字コードはUTF-8(BOM無し)、改行コードはLFを設定し、ファイルの最終行には空行を入れる必要があります。ただし .htaccess が日本語などの全角文字を含まず、半角英数字だけである場合は文字コードは Shift-JIS や EUC-JP などでも問題ありません。

.htaccess の書き方 | murashun.jp

空行がない場合や文字コードが異なる場合には、Internal Server Errorが発生してしまう可能性があるとのこと。

.htpasswd(BASIC認証パスワードファイル)の作り方

次に、BASIC認証で用いるIDとパスワードを記載したファイルを作成し、サーバーに設置。
このうち、パスワードは暗号化したものを記載しておく必要があります。

コマンドを利用したやり方もありますが、簡単なパスワード生成用サイトがあります。
下記のサイトより暗号化パスワードを生成、生成された1行のテキストをそのまま.htpasswdファイルに貼り付けてサーバーへアップロードしてください。
(ファイルの中身も生成されたテキスト1行のみでOK)

htpasswdジェネレータ – htaccess パスワード用 MD5 ハッシュ計算

使用するIDとパスワードを入力したら、アルゴリズムのプルダウン項目が「MD5 (Apache Servers Only)」となっていることを確認。
「左で設定したパスワードを暗号化 」をクリックして、パスワードを暗号化しましょう。
生成されたテキスト1行をコピーして.htpasswdファイルを作成、ペーストしてファイルの中身とします。

BASIC認証は盗聴や改竄が簡単であるという欠点を持っています。
それらのリスクを防ぐため、Digest認証というユーザ名とパスワードをMD5でハッシュ化して送る方法があります。

htpaswdの暗号化を自動で生成してくれるジェネレーターにはいくつかありますが、上記サイトのジェネレーターようにMD5によるハッシュ化に対応しているものを利用するようにしましょう。

.htaccessファイルについて詳細を解説

htaccessファイル

.htaccessファイルとは…

.htaccess(ドット・エイチ・ティ・アクセス)とは、Apache(アパッチ)などのソフトウェアが使用されている環境で使用可能なディレクトリ単位のWebサーバー設定ファイルです。
これが特定のディレクトリに設置されると、「.htaccess」内に記述されている内容が、設置されたディレクトリ内とその下層のディレクトリ内に対して適用されます。

.htaccessとは? – Qiita

具体的には、この.htaccessファイルに設定を書き込むことで

  • Basic認証
  • 301リダイレクトの設定
  • カスタム404エラーページ設定
  • URLの正規化

などを、.haccessファイルが設置されているディレクトリおよびそれ以下のディレクトリについて、設定することができます。

ただこの.htaccessファイル、サーバー主設定ファイル(httpd.conf)を触ることができるなら、極力使わないほうが良いとされています。
(今回は.htaccessで設定をしましたが。)

基本的に、.htaccess ファイルの使用は極力避けてください。
ユーザ認証の設定は httpd.conf (サーバ主設定ファイルのこと) に書くことができますし、実際その方がより良い設定方法とされています。

どんな時に使用すべきか
.htaccess ファイルは、ディレクトリ毎の設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていないという場合にのみ使うべきものです。
例えば、レンタルサーバーなどで自分専用にWEBサーバーの設定を変えたい場合は、.htaccess ファイルを格納することで、WEBサーバの設定変更(一部)を行うことができます。
他にも、サーバ管理者が頻繁に httpd.conf の設定変更を行ないたくはないので、個々のユーザが .htaccess ファイルを使って設定変更を行なうことを許可したい!そんな時に使用します。
しかし、使用する場合は、httpd.conf でAllowOverrideディレクティブを使って、最低限の許可しか与えないようにすべきですね。

.htaccessとは? – Qiita

.htaccessファイルの設置場所について

基本的には、.htaccessファイルの設定内容を効かせたいディレクトリに設置をしてください。
.htaccessファイルを設置した配下のディレクトリには、全て設定内容が適用されます。

.htaccessファイル設置場所について、参考記事:
.htaccessの設置場所はここでいいでしょうか? 【OKWAVE】

適用範囲について、参考記事:
htaccess留意事項

④: Basic認証が効かない場合には、httpd.conf(サーバー主設定ファイル)のAllowOverrideをチェック

vpsサーバー

Basic認証が効かない場合には、httpd.conf(サーバー主設定ファイル)のAllowOverrideの項目が” All “になっているか
チェックしましょう。

なお、エックスサーバーなどの共用レンタルサーバーの場合には
httpd.confファイルを編集できないことが多いので、諦めるしかありません…
(ファイル自体を見つけることができません)

Apacheのhttpd.confで.htaccessが有効になるようにしとかないといかんのですね。
ドキュメントルートのAllowOverrideがNoneになっていたので、Allに変更。

Basic認証で躓いた – Qiita

Apacheの設定ファイル、httpd.confの場所は

/etc/httpd/conf/

(CentOS,RHEL,Fedoraなどの場合)

Apacheの設定ファイル httpd.confの場所 – Qiita

私の環境、ConoHa VPSの場合は以下の設定内容でした。
環境は前述のとおり、ConoHa VPSでConcrete5イメージをインストールしたものです。

httpd.confファイル内
130行目あたりに以下の設定があります。
151行目あたりの”AllowOverride”を
None → All に変更して、オーバーライドを許可します。

# Further relax access to the default document root:
<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.4/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.
#
Require all granted
</Directory>

また、上記Aliasのディレクトリに加えて
ルートディレクトリの部分も
AllowOverride None → All に修正

100行目あたり

# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>

これを none → All に修正します。

mod_rewriteが効かないと思ったら.htaccessが効いていなかった件

⑤: パーミッションを確認して、Apacheサーバーを再起動したら完了

.htaccessおよび.htpasswdのパーミッションは604にしてください。
(サーバーによっては644推奨)

ここまで完了したら、サーバーを再起動して、完了です。(Apacheを再起動する。)
サーバーを再起動(またはhttpd自体を再起動)させないと、httpd.confの設定変更が有効になりませんのでご注意ください。

# service httpd restart

または

# systemctl restart httpd

でApacheを再起動します。

ConoHa VPSであれば、サーバーコントロールパネルより「再起動」を押して
VPSごと再起動してもOKです。

以上で完了です。おつかれさまでした!

WordPressでログイン画面にBASIC認証をかける方法。wp-adminだけでなくwp-login.phpにもアクセス制限を

なお、WordPressにアクセス制限としてBASIC認証をかける場合、ダッシュボードであるwp-adminフォルダだけでなくwp-login.phpファイルにもBASIC認証をかけることを推奨します。

[WordPressログイン画面とダッシュボードにBASIC認証でアクセス制限をかける方法 | まほウェブ](https://marketing-wizard.biz/blog/security/wp-login-basicauth/)

WordPressログイン画面とダッシュボードにBASIC認証でアクセス制限をかける方法

具体的なBASIC認証の作成・設定方法とあわせて說明しています。
WordPressでのBASIC認証の設定・実装を検討している方はぜひご一読ください。

この記事をシェアする:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Facebook (Opens in new window)

本投稿の関連記事

カテゴリー: サーバー タグ: concrete5, ConoHa-vps, htaccess

著者の自己紹介と実績紹介サイトはこちら

SEOコンサルティングやSEO実行支援、Webサイト制作のご相談を承っています。

Webサイト制作とSEOの専門家 – Marketing Wizard

上記サイトでは、私の経歴とWebサイト制作・SEO支援実績を掲載しています。

ぜひご覧くださいませ。

お気軽にコメントをくださいませ!

 

本記事はあなたのお役に立てましたでしょうか?
ひとことでもコメント欄からご感想をいただければ、モチベーションに繋がります。

また「本記事には書かれていなかったけれど、他の点について知りたい」というご質問や、誤っている箇所などあればご指摘もお待ちしております。

メールアドレスが公開されることはありません。
なんでもお気軽にコメントくださいませ。

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Marketing Wizard : Nakata

" Webマーケティングで魔法をかける "
東京都にて活動しています、30代フリーランスのSEOコンサルタント兼Webディレクターです。Marketing Engineerを目指して色々勉強と挑戦中。

サイト制作では、SEOを考慮したサイト設計から、PR・プレスリリースを含めた幅広いWebマーケティングの提案・代行まで。
Google AnalyticsやSearch Console等のアクセスデータやログからの各種分析も行っています。

新規事業のご相談をいただくことも多く、No-Codeを用いた仮説検証・テストマーケティングもお引き受けしています。

【経歴】
神戸大学法学部卒→政府系金融機関。その後、大阪のインバウンド向け広告代理店に勤務した後、2014年4月から個人事業主として活動開始。
約5年間にわたり、旅行・観光のプランニング&手配代行サービスサイトを自身で設立。数名にてスモールビジネスとして運営しておりました。

自己紹介&実績掲載サイト

Webサイト制作とSEOの専門家 - Marketing Wizard

follow me !

  • Twitter
  • LinkedIn

サイト内検索

Recent Posts

  • WordPressブログをNotion製Webサイトに移行することにしました 2021年9月14日
  • Glideでログイン機能・ユーザーごとに表示切り替えできるアプリは作れるか 2021年7月24日
  • 「AWSをはじめよう」での初期設定まとめ。請求アラート・IAMユーザー・セキュリティ 2021年7月24日
  • 「URLがGoogleに登録されていません」Search Consoleでインデックスされない 2021年7月20日
  • オンラインのマインドマップならmiroで共同編集!作成・Notion埋め込み方法 2021年7月11日

Categories

  • CMS一般
  • concrete CMS
  • EC/ショッピングカート
  • No-Code
  • SEO
  • Strikingly
  • webセキュリティ
  • webデザイン/コーディング
  • webマーケティング一般
  • WordPress
  • その他
  • サーバー
  • フリーランス論/仕事術
  • マーケティングオートメーション(MA)・CRM
  • ライティング
  • 便利ツール一般

Tags

2段階認証 Adalo Airtable aws concrete5 ConoHa ConoHa-vps ContactForm7 ConvertKit CSS E-A-T Instagram kusanagi LP No-Code nofollow noindex owncloud podcast Quire ssh strikingly STUDIO tmux vps Webサイトビルダー webセキュリティ web制作 wordpress エックスサーバー エッセンシャル思考 エラー対応 クラウドストレージ サーチコンソール セキュリティ ツール データベース プラグイン プロジェクト管理 メールマーケティング ライティング 事例 書評 著者情報 高速化

ソース・参照元つきAIによる高品質SEO記事コンテンツ作成ツールα版が完成しました

現在、クローズドβ版に向けて先行登録ユーザー様を募集しています。

機能や詳細は ソース・参照元つきAIによる高品質SEO記事コンテンツ作成ツールα版が完成しました の記事をご確認ください。

Notion製Webサイトでも発信中

Notion×Superで制作したWebサイトでも、アウトライン形式で最新情報を発信しています。

魔法使いのスクリプト

頻繁に記事を更新していますので、こちらもぜひご覧ください。

Anchorでpodcastラジオ音声配信もしています

Webマーケティングやスモールビジネスに役立つ方法をpodcastラジオ音声配信しています。

魔法使いのWebマーケティングRadio  • A podcast on Anchor

「ながら聴き」も可能な内容ですので、ぜひお楽しみください。

お気軽にご相談ください

No-Codeによるシステム開発やCMS構築・Webサイト制作から、サイト分析・SEOを中心としたWebマーケティングまで。
さらにプレスリリース配信を起点としたPR戦略企画も承ります。

自己紹介・実績サイト

お問い合わせはこちらから。

ぜひお気軽にご相談ください。