ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
ベーシック認証とは
Apache HTTP Server が標準でサポートするもっとも簡単な認証方式です。ブラウザがダイアログを表示してユーザー ID とパスワードを入力させ、Apache がそれを検証します。.htaccess と .htpasswd の 2 ファイルだけで設定でき、開発中サイトの非公開化や管理画面の保護でよく使われます。
設定の全体像
htpasswdコマンドで .htpasswd(ID とハッシュ化パスワードのファイル)を作成- 保護したいディレクトリに .htaccess を配置し、認証ディレクティブを記述
- Apache を再起動またはリロードして反映
1. .htpasswd の作成
htpasswd コマンドで作成します。-c はファイルを新規作成(既存ファイルがあれば上書き)、-b はパスワードを引数で渡す、-m は MD5 ハッシュ(デフォルトで安全)です。
# 新規作成(既存があれば上書き)
htpasswd -b -c -m .htpasswd admin secret
# 既存ファイルにユーザー追加(-c を外す)
htpasswd -b -m .htpasswd user2 password2
# 対話的に入力(パスワードがコマンド履歴に残らないので推奨)
htpasswd -m .htpasswd admin
# ユーザー削除
htpasswd -D .htpasswd user2
# bcrypt(より強いハッシュ)
htpasswd -B -c .htpasswd admin
作成された .htpasswd は以下のような内容です。
admin:$apr1$abc1234$XYZ.encryptedhash.here/
user2:$apr1$def5678$ABC.encryptedhash.here/
2. .htaccess の記述
保護したいディレクトリに .htaccess を置きます。AuthUserFile は .htpasswd の絶対パスを指定してください。
AuthUserFile /var/www/private/.htpasswd
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
ディレクティブの意味
| ディレクティブ | 役割 |
|---|---|
AuthUserFile | .htpasswd の絶対パス。相対パスは不可 |
AuthName | ブラウザ認証ダイアログに表示されるrealm(領域名) |
AuthType | 認証方式。Basic または Digest |
require valid-user | .htpasswd に登録された任意のユーザーで OK |
require user admin | 特定ユーザーのみ許可 |
require group editor | グループ単位で許可(AuthGroupFile 必要) |
3. Apache の AllowOverride を確認
.htaccess を有効にするには httpd.conf 側で AllowOverride AuthConfig 以上が設定されている必要があります。
<Directory /var/www/html>
AllowOverride AuthConfig
# または全許可
# AllowOverride All
</Directory>
変更後は Apache をリロードします。
# Debian/Ubuntu
sudo systemctl reload apache2
# RHEL/CentOS/Rocky
sudo systemctl reload httpd
# 設定構文チェック
apachectl configtest
.htpasswd の置き場所
.htpasswd はドキュメントルート(公開ディレクトリ)の外に置くのが安全です。公開ディレクトリ内に置く場合は、追加で .htaccess に以下を入れて直接アクセスを拒否します。
<Files ".htpasswd">
Require all denied
</Files>
セキュリティ上の注意
- HTTPS 必須 — ベーシック認証は ID とパスワードを Base64 でエンコードして送るだけで、暗号化はしません。HTTP では盗聴される
- htpasswd -b は履歴に残る — 本番では対話入力か、デプロイスクリプトで自動化
- パスワードは長く — ブルートフォース対策に最低 12 文字
- bcrypt (-B) を使う — MD5 (-m) よりはるかに強い
- 本格的なログイン認証が必要ならアプリ側で実装するか OAuth/SSO を検討
よくあるトラブル
| 症状 | 原因と対処 |
|---|---|
| 500 Internal Server Error | .htaccess の構文ミス。apache2ctl configtest でチェック |
| 認証ダイアログが出ない | AllowOverride が None。AuthConfig 以上に |
| 正しいパスワードでも弾かれる | AuthUserFile のパスが間違っている、または Apache から読めない権限 |
| .htpasswd を直接ダウンロードできてしまう | ドキュメントルート外に移動 or <Files".htpasswd"> Require all denied </Files> |
| ログアウトしたい | ベーシック認証にはログアウト機能がない。ブラウザを閉じるか、別 URL に異なる credentials でアクセス |
特定のパスのみ保護する
.htaccess の代わりに httpd.conf で <Location> や <Directory> を使うほうが処理が高速で確実です。
<Directory /var/www/html/admin>
AuthUserFile /var/www/private/.htpasswd
AuthName "Admin Area"
AuthType Basic
require valid-user
</Directory>
nginx で同じことをする場合(参考)
同じ仕組みは nginx でも利用できます。Apache の .htpasswd 形式の認証ファイルがそのまま使えます。
server {
location /admin/ {
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
IP アドレスでの許可と組み合わせる
社内 IP は認証なしで通し、それ以外はベーシック認証、という二段構えもよくあります。
<Directory /var/www/html/admin>
AuthUserFile /var/www/private/.htpasswd
AuthName "Admin"
AuthType Basic
# 社内 IP は無条件で許可、それ以外はパスワード要求
<RequireAny>
Require ip 203.0.113.0/24
Require valid-user
</RequireAny>
</Directory>
認証情報の使い回し(curl の例)
自動化やテストでは curl の -u オプションで認証情報を渡せます。
curl -u admin:secret https://example.com/admin/
# あるいは事前にダイアログを出す
curl --basic --user admin https://example.com/admin/
関連
- Apache HTTP Server — 本体
- .htaccess — ディレクトリ単位設定ファイル
- AllowOverride — .htaccess の許可範囲
- Digest 認証 — より安全な認証方式
- Let's Encrypt / HTTPS — ベーシック認証と必ず組み合わせる
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?