これは大きな質問なので、私が知らない部分を調べるのに役立つ、概要的な回答だけを探しています。
本質的に問題は次のとおりです。専用の Mac Mini (または同様の macOS マシン) を用意し、同じローカル ネットワーク上のユーザーだけがアクセスできる Web サイトをホストする必要があります。
私の最初の直感は、ドメイン (および証明書) を購入し、それを自分のサーバーが配置されているとわかっているローカル アドレス (例: 10.10.10.152) にポイントすることでした。 そうすれば、そのドメインにアクセスしようとする人は、適切なネットワーク上にいる場合は、ローカルで私の Web サイトにリダイレクトされます。
これは機能しますか? 機能する場合、ドメインを取得し、証明書をインストールし、ローカル IP を指定するための主要な手順は何ですか?
答え1
ドメイン (および証明書) を購入し、それを、自分のサーバーが配置されていることがわかっているローカル アドレス (例: 10.10.10.152) に指定します。こうすることで、そのドメインにアクセスしようとするユーザーは、適切なネットワーク上にいる場合は、ローカルで自分の Web サイトにリダイレクトされます。
それはうまくいくでしょうが、何かを買う必要はまったくありません。
たとえば、ローカルDNSを設定できます。サービス.example.org(所有している場合例:)、 またはサービス.lan独自のドメインがない場合、A レコードをプライベート Web サーバーにポイントします。
HTTPS(TLS)が必要な場合は、証明書に自己署名して各クライアントからの証明書を明示的に信頼するか、新しいCAを開始して(OpenSSLを使用すると1分で完了します)、サービス.lanCA ルート証明書を信頼アンカーとしてクライアントに展開します。
答え2
コメントの議論に基づいて、たとえば Apache を使用して、モジュールmod_authz_host
とRequire
ディレクティブを使用して次のような設定を行うことができます。
<Directory /var/www/web/>
Require host localhost
Require ip 127.0.0.1
Require ip 192.168.0
</Directory>
(上記はローカルネットワークの場合です192.168.0.0/24
)
localhost/127.0.0.1
この設定は、ネットワーク内のすべてのホストへのアクセスを制限します192.168.0.0/24
答え3
ドメインを登録/構成し、証明書を購入するという考えに至ったのは偶然か意図的かはわかりませんが、ネットワーク構成とシステム管理の経験がない場合、これがおそらく目標への最短ルートです。
代替アプローチとしては、
- インターネット上でウェブサイトをプロビジョニングし、ACME パスへのアクセスのみを許可し、LetsEncrypt から無料の証明書を取得します (有効なパブリック DNS レコードも必要です。したがって、適度に静的な IP または動的 DNS サービスが必要です)
- 独自の証明機関を構築し、CA証明書をクライアントに配布し、それを使用してサービスの証明書に署名します。
- または TLS をまったく使用しない (非推奨)。
サードパーティの証明機関から証明書を取得するには、レコードを持つ登録済みドメインが必要です。他の方法のいずれかを選択した場合は、登録済みドメイン/パブリックにアクセス可能な DNS レコードは必要ありません。たとえば、内部 DNS に dnsmasq を使用できます (特定の DNS 名のオーバーライドを簡単にプロビジョニングできます)。
インターネット接続がホストの IP アドレスへの外部アクセスを許可しない限り、追加のセキュリティ制御は必要ありませんが、今追加しておくと将来の事故を防ぐことができます。