56

我正在为仅需要通过 HTTPS 在内部网络上使用的系统设置网络服务器(无法从外部访问)

现在我用自签名证书设置了它,它工作正常,除了一个令人讨厌的警告,所有浏览器都会启动,因为用来签名它的 CA 权威自然是不受信任的。

访问由本地 DNS 服务器上解析的本地 DNS 域名提供(例如:https://myapp.local/),该地址将该地址映射到 192.168.xy

是否有一些提供商可以向我颁发一个适当的证书以用于内部域名 (myapp.local)?还是我唯一的选择是在真实域上使用 FQDN,然后将其映射到本地 IP 地址?

注意:我想要一个不需要在每个浏览器上将服务器公钥标记为受信任的选项,因为我无法控制工作站。

4

7 回答 7

26

您有两个实用的选择:

  1. 建立自己的 CA。你可以用 OpenSSL 来做,那里有很多谷歌信息。

  2. 继续使用您的自签名证书,但在浏览器中将公钥添加到您信任的证书中。如果您在 Active Directory 域中,则可以使用组策略自动完成。

于 2009-03-05T18:48:25.353 回答
13

我做了以下,这对我很有效:

我获得了 *.mydomain.com 的通配符 SSL 证书(例如,Namecheap 以低廉的价格提供)

我创建了一个 CNAME DNS 记录,将“mybox.mydomain.com”指向“mybox.local”。

我希望这会有所帮助 - 不幸的是,您需要为您的域名购买通配符证书,但您可能已经拥有了。

于 2016-12-05T23:03:10.403 回答
5

您必须为此询问典型的证书人员。不过,为了便于使用,我会使用 FQDN,您可以使用已注册子域的子域:https ://mybox.example.com

此外,您可能想查看通配符证书,为(例如)https://*.example.com/ 提供一揽子证书 - 如果您需要的不仅仅是这个证书,甚至可用于虚拟主机。

认证 FQDN 的子域或子域应该是标准业务——也许不适合那些以在 2 分钟内提供证书而自豪的大人物。

简而言之:要使证书受工作站信任,您必须要么

  • 更改工作站上的设置(您不想要)或
  • 使用已经信任的一方来签署您的密钥(您正在寻找解决方法)。

这就是你所有的选择。选择你的毒药。

于 2009-03-05T19:23:22.260 回答
5

我会将此添加为评论,但它有点长..

这并不是您问题的真正答案,但实际上我发现不建议使用 .local 域 - 即使它在您的“本地”测试环境中,使用您自己的 DNS 服务器。

我知道 Active Directory 在您安装 DNS 时默认使用 .local 名称,但即使是微软的人也说要避免使用它。

如果您可以控制 DNS 服务器,则可以使用 .com、.net 或 .org 域 - 即使它只是内部的和私有的。这样,您实际上可以购买您在内部使用的域名,然后为该域名购买证书并将其应用于您的本地域。

于 2009-04-30T14:06:18.107 回答
2

我有类似的要求,让我们公司的浏览器信任我们的内部网站。

我不希望我们的公共 DNS 为我们的内部站点发布公共 DNS,所以我发现完成这项工作的唯一方法是使用内部 CA。

这是为此而写的文章,

https://medium.com/@mike.reider/getting-firefox-chrome-to-trust-your-internal-websites-internal-certificate-authority-a53ba2d4c2af

于 2020-02-25T18:29:56.833 回答
0

我认为答案是否定的。

开箱即用,浏览器不会信任证书,除非它最终被预先编程到浏览器中的人验证,例如威瑞信、register.com。

您只能获得全球唯一域的经过验证的证书。

所以我建议您使用 myapp.local.yourcompany.com 而不是 myapp.local,如果您拥有 yourcompany.com,您应该能够获得证书。这会花费你的想法,每年几百美元。

还要注意通配符证书可能只会下降到一个级别 - 因此您可以将其用于 a.yourcompany.com 和 local.yourcompany.com 但可能不能用于 bayourcompany.com 或 myapp.local.yourcompany.com,除非您支付更多.

(有谁知道,这取决于通配符证书的类型吗?是主要浏览器信任的子子域吗?)

于 2009-10-23T13:46:07.083 回答
0

仅用于开发目的

这个 docker 镜像解决了这个问题(感谢 local-ip.co):https ://github.com/medic/nginx-local-ip 。

它在端口 443 中启动一个反向代理,并使用适用于任何*.my.local-ip.co域的公共证书。例如。您的本地 IP 是 192.168.10.10 → 192-168-10-10.my.local-ip.co已经指向它(这是一个公共域)!假设应用程序在您的计算机上的 8080 端口运行,您只需执行此操作即可代理传递您的应用程序并将其公开在 URL https://192-168-10-10.my.local-ip.co

$ APP_URL=http://192.168.10.10:8080 docker-compose up

使用您在要访问应用程序的设备中配置的任何公共 DNS 解析域,但您的流量在您的应用程序和客户端之间保持本地(通过代理),因此您甚至可以使用它来连接内部的设备同一个 LAN 网络,没有任何流量到互联网,所有流量都是本地的。

对开发最有用的原因是任何人都可以使用相同的证书启动应用程序,因此并不是很安全,但是当您需要在开发或测试时使用 HTTPS 公开您的应用程序时很有帮助(例如,加载的 Android 中的 HTML5 应用程序)与网络视图)。

于 2021-09-03T16:59:40.043 回答