在不透露太多信息的情况下,我需要设置一个网络服务器系统,供互联网上的最终用户使用。
用例是这样的:
- 连接到系统时,最终用户(通常)在家中位于本地防火墙后面。
- 该系统由我们托管的远程服务器组成,严格通过 https(使用 SSL)
- 授权机制要求用户在远程服务器上自行创建帐户,成功创建帐户后,将需要下载一个软件并将其安装到最终用户的计算机上。除其他外,该软件还包含本地网络服务器。
- 此“本地”网络服务器还必须仅允许与用户浏览器的 https 连接。
由于分布式软件将成为每个用户计算机上唯一的 Web 服务器,因此我不确定如何或是否可能获得第三方签名的 SSL 证书,该证书在用户连接到该证书时不会导致可信度错误通过网络浏览器。当然,它可以使用自签名 SSL 证书,但其想法是避免浏览器警告,以便最终用户隐式“信任”来自通过 SSL 运行其网络服务器的应用程序的数据。
这可能吗?
本地主机
您永远不会获得本地主机的正确 https 证书。这是严格禁止。因为reasons.
简而言之:
- 设备配置错误实际存在在野外,在解析 localhost 之前等待查找
/etc/hosts
- 如果路由器定义
localhost.foo.local
它可能会导致localhost
错误地解决(您以前可能见过此类错误)
您可以创建一个根证书 and then创建一个所谓的“自签名”证书,由您创建的根 ca 签名。你仍然会看到丑陋的警告屏幕,但它会起作用。
- See https://coolaj86.com/articles/how-to-create-a-csr-for-https-tls-ssl-rsa-pems/
2023 更新:球童
以下解决方案仍然适用,但是caddy可以让他们变得更加容易。
它可以创建插入操作系统钥匙串的根证书,并且有一个 DuckDNS 插件,因此您可以通过 DNS 验证等在公共或私有 IP 上拥有公共证书。
localhost.YOURSITE.com(指向 127.0.0.1)
代替实际的localhost
证书,我按照尤金的建议进行操作 - 在公共域上创建 127.0.0.1 记录。
您可以获得免费的 HTTPS 证书localhost.YOURSITE.com
通过让我们加密通过https://greenlock.domains。只需选择 DNS 选项而不是 HTTP 文件上传选项
将 localhost.MY-SLD.MY-TLD 指向 127.0.0.1
- 购买一个
*.localhost.example.com
证书并为每个安装颁发一个秘密xyz.localhost.example.com
(并将其包含在公共后缀列表中以防止对 example.com 的攻击)
- Use 启用 greenlock 的应用程序动态生成此类证书(通过https://letscrypt.org)直接在客户端(或将它们传递给客户端)
如果您没有被纳入 PSL,请注意:
- session、localstorage、indexeddb 等由域共享
- 更改端口不会改变它们的共享性
成为您自己的根证书
Update: 与类似的事情格林洛克使用 ACME / Let's Encrypt,这不再特别相关。
这可能是一个非常糟糕的主意,因为我们不希望用户习惯于随意安装根 CA(我们知道如何做到这一点)原来是联想的),但对于企业/克隆机器来说,这可能是一个合理的低预算选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)