我在本地服务器上运行了几个服务,我想通过 HTTPS 来运行它们。问题是,如果我没有弄错的话,自签名证书总是会发出警告,所以出于实际原因,这实际上不是一个选择。
我确实有一个共享托管服务,其中包含域名和子域名,如果需要,甚至可以为此获取专用域名。我从主机获得了 Let's Encrypt 证书,但在本地使用它时会发出警告,因为本地 IP 不是证书的一部分。主机不支持将非托管 IP 添加到证书,所以这不好。
目前,我正在本地计算机上运行一个脚本,该脚本与保存 IP 地址的远程服务器联系,因此当访问特定页面时,它会读取 IP 并重定向。这有效,但对 SSL 不利。有没有办法通过服务器上的脚本将域指向动态 IP,例如 DDNS 服务?在 cpanel 中,我只能将其指向静态 IP 值。
有哪些解决方案可以让本地机器上运行的本地和转发的外部 IP 的 SSL 没有任何警告?
例子:通过家庭互联网连接运行的测试服务/网站。
本地 IP 192.168.0.10
外部 IP 85.24.69.2(从互联网转发并可访问,动态 IP)
此服务应可通过 HTTPS 从互联网和本地访问。如果没有其他解决方案,可以使用 hosts 文件解决本地访问(无需互联网)。用于访问的地址可以是 IP 或域。
答案1
修复此问题的步骤非常简单:
- 为您的本地环境购买域名
- 在该域上创建一个 A 记录,指向您的外部 IP。
- 在您的本地 DNS 服务器(无论是消费者路由器还是类似设备)中为同一域配置一个 DNS 区域,指向您的内部 IP(192.168.0.10)。
- 安装 cert-bot auto(并按照https://letsencrypt.org/getting-started/
- 有了正确、有效的安全连接,您便可以开始了。
您不能将 LE 证书用于 IP 地址。实际上,您不应该将 LE 证书用于任何目的。正如其他人在评论中指出的那样,证书并不绑定到 IP 地址,而是绑定到域名。
答案2
假设您使用 Web 浏览器访问这些服务,则证书仅关心请求中的主机名。如果您在 LAN 上本地访问该服务,请向 DNS 添加主机记录。
192.168.0.10 www.example.com
更新您的外部 DNS 以指向您的公共 IP。85.24.69.2 www.example.com