VPSを実行しています。オープンBSD 7.4x64私の個人的なWebページをホストします。このWebページは、Apacheサーバーの代わりにOpenBSDが提供するデフォルトのhttpデーモンを使用します。私は私のサイトのほとんどがこのサイトを訪れる人に公開したいのですが、プライバシーのために、特定のページは認証されたユーザーにのみ表示されるようにしたいと思います。これを達成する方法に関するドキュメントをオンラインで検索しましたが、ほとんどが手ぶらで出てきました。
これまで、ユーザーにユーザー名とパスワードを要求するauthenticate
ステートメントをファイルに追加し、保護されたゾーン用に以前に作成したファイルを確認する必要があることがわかりました。私はまた、人がそれぞれ異なるファイルを持つ複数の「領域」を持つことができることを発見しました。私の問題は、認証が必要であり、正しい情報を受信した後にユーザーが通過できるようにファイルを正しく設定できないことです。/etc/httpd.conf
.htpasswd
.htpasswd
/etc/httpd.conf
OpenBSDのデフォルトのhttpデーモンの採用率は、少なくともApacheサーバーの採用率と比較してまだ比較的低いようです。 OpenBSDのマンページ以外には、これがどのように機能するのかについての徹底的な説明が見つからず、多くの人が非常に徹底していると言っていますが、それでも完全に理解するのに苦労しています。
これは私にとってとても新しいことで、実際にこれらすべてを最初に設定するしかありませんでした。スクリプトは他の人によって書かれました。そして続いて彼らの指示。
すべてをまとめると、フォルダ/ディレクトリとすべてのサブフォルダ/サブディレクトリを繰り返しパスワードで保護したいと思います。これは私authenticate "realm" with "[.htpasswd file]"
に追加するのと似ていると思います。問題は、この操作を試みると、サーバーがパスワードの入力を求めるメッセージのみを表示し、パスワードが以前に作成した資格情報と一致するかどうかにかかわらず、ただちに再入力を求めるメッセージです。パスワードプロンプトをクリックすると、サーバーはページを提供します。server
httpd.conf
.htpasswd
cancel
"401 Unauthorized"
以下は、無限のパスワード問題が発生する構成です。
prefork 5
types {
include "[TYPES_FILE_LOCATION]"
}
server "[DOMAIN_NAME.COM]" {
listen on * port 80
location * {
block return 301 "https://$HTTP_HOST$REQUEST_URI"
}
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
}
server "[DOMAIN_NAME.COM]" {
listen on 127.0.0.1 port 8080
default type text/html
[*** PROBLEM HERE v ***]
location "/[PROTECTED_FOLDER]" {
authenticate "realm" with "[.HTPASSWD_LOCATION]"
}
[*** PROBLEM HERE ^ ***]
location "/pub/*" {
directory auto index
}
}
この設定は、通常のhttps接続とhttp -> https接続に機能します。
私も試しました
[*** PROBLEM HERE v ***]
location "/[PROTECTED_FOLDER]/*" {
authenticate "realm" with "[.HTPASSWD_LOCATION]"
}
[*** PROBLEM HERE ^ ***]
同様の効果を得る。
以下は、users.htpasswdファイルとすべての親ディレクトリに対する権限です。
drwxr-xr-x 13 root wheel 512 Nov 29 19:00 /
drwxr-xr-x 27 root wheel 512 Nov 15 05:22 /var
drwxr-xr-x 11 root daemon 512 Jan 1 23:20 /var/www/
-rw------- 1 www daemon 68 Jan 1 23:29 /var/www/users.htpasswd
私がここで何を間違っているのか知っている人はいますか?私が見逃したリソースがありますか?これまでに私が見つけたリソースのいくつかは次のとおりです。
同様の質問#1-misc.openbsd.narkive.com
同様の質問 #2 - reddit.com/r/openbsd ファイル
httpd.conf マニュアルページ - man.openbsd.org ファイル
どんなヒント/ヘルプ/ポインタにも大変感謝します。
答え1
chroot
この最小構成は、デフォルト値が次のとおりであると仮定すると効果的です/var/www
。
server * {
listen on * port 80
root "/htdocs/default"
directory auto index
location "/protected/" {
authenticate "realm" with "/auth/htpasswd"
}
}
types {
include "/usr/share/misc/mime.types"
}
/
保護されたディレクトリの後に続く名前を書き留めます。構成ファイルを編集しすぎたため、このファイルがあるかどうかはわかりません。
mkdir /var/www/htdocs/default # Server document root
mkdir /var/www/htdocs/default/protected # Protected subdirectory
mkdir /var/www/auth # Directory to store htpasswd
htpasswd /var/www/auth/htpasswd test # User "test"; set your own password
chown www /var/www/auth/htpasswd # Fix ownership
rcctl enable httpd # Enable the service
rcctl restart httpd # (Re)start the web server
location "/pub/*"
include ワイルドカードなどのディレクティブを使用するには、使用する必要がありますが、十分だとlocation match "/pub/*"
思います。location "/pub/"