这是一个大问题,所以我只寻求一个高层次的概述答案来帮助我研究我不知道的部分。
本质上的问题是这样的:我需要使用专用的 Mac Mini(或类似的 macOS 机器)并用它来托管一个只有同一本地网络上的用户才能访问的网站。
我的第一反应是购买一个域名(和证书),并将其指向我知道我的服务器所在的本地地址(例如 10.10.10.152)。这样,如果任何人尝试访问该域名,如果他们在正确的网络上,他们将被本地重定向到我的网站。
这可行吗?如果可行,获取域名、安装证书并将其指向本地 IP 的主要步骤是什么?
答案1
购买域名(和证书)并将其指向我知道我的服务器所在的本地地址(例如 10.10.10.152)。这样,如果任何人尝试访问该域名,如果他们在正确的网络上,他们将被本地重定向到我的网站。
那样可行,但完全没有必要购买任何东西。
您可以设置本地 DNS,例如服务.example.org(如果你拥有示例网站), 或者服务局域网无需您自己的域名。将 A 记录指向您的私人网络服务器。
如果你需要 HTTPS(TLS),你可以自行签署证书并明确信任每个客户端的证书,或者启动一个新的 CA(使用 OpenSSL 只需一分钟),为服务局域网并将 CA 根证书部署到您的客户端作为信任锚。
答案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 记录 - 您可以(例如)将 dnsmasq 用于内部 DNS(轻松配置特定 DNS 名称的覆盖)。
只要您的互联网连接不允许外部访问主机的 IP 地址,您就不需要额外的安全控制,但现在添加它们可能会防止将来发生事故。