如何在 Intranet 中处理需要安全上下文的 Web 应用程序?
Posted
技术标签:
【中文标题】如何在 Intranet 中处理需要安全上下文的 Web 应用程序?【英文标题】:How to handle web apps requiring secure context in intranets? 【发布时间】:2019-11-27 17:24:29 【问题描述】:我有一个可供客户在 Intranet 中使用的 Web 应用程序。它使用需要安全上下文的功能,例如getUserMedia
。这些天来最好的做法是什么?
客户的技术知识很少,而且该应用程序可能只是路过的人使用,因此在浏览器上创建和安装证书颁发机构太麻烦了。尽管在安装过程中需要它是可以接受的,但不能保证始终有 Internet 连接。 TLS 证书的警告消息是可以接受的(不理想,但可以解释),但自签名证书并不能解决问题,因为它们仍然被认为是不安全的上下文。我无法控制 Intranet,运行服务的设备只能通过 IP 访问,无需主机名或本地 DNS 服务器。
有哪些替代方法可以获得尽可能顺畅的安全上下文?
【问题讨论】:
我最终在带有通配符的自定义域上实现了自定义 DNS 服务器。代码在github.com/Corollarium/localtls 【参考方案1】:基于 Chrome 88 的解决方案不保证早期和更高版本。
服务器: IP 或 DNS 不能访问任何特殊内容
客户端:
-
批处理文件将成为用户桌面上的快捷方式,并在 chrome 中作为应用程序启动 Web 应用程序 - 单独的窗口。
start "WEB APP" /MAX ...
的使用是为了保证批处理文件的cmd窗口尽快消失。
@Echo off
set WEB_APP_URL=http://app.ip.or.dns
start "WEB APP" /MAX "C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=%WEB_APP_URL% --allow-running-insecure-content --ignore-certificate-errors --app=%WEB_APP_URL%
如果你想让这个应用程序有一个完全不同的 chrome 配置文件 添加这个
set COMMON_USER_DATA_DIR=C:\\Users\\Public\\YOUR_APP\\
--user-data-dir=%COMMON_USER_DATA_DIR% --profile-directory=Default --allow-profiles-outside-user-dir
【讨论】:
这适用于开发人员,但对于任何数量的用户访问应用程序的部署来说太复杂了。此外,他们可以从各种设备和浏览器访问,而不仅仅是 Chrome。 @brunobg - 同意。这都是真的。这不是完整的或非常好的解决方案。这也是……以上是关于如何在 Intranet 中处理需要安全上下文的 Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 3 Intranet 应用程序中重新验证用户身份?