如何在 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 应用程序中重新验证用户身份?

没有 APNS 的推送通知具有安全的 Intranet

如何在 Spring MVC 中模拟安全上下文以进行测试

如何测试 AccessViolationException 的处理

如何在安全上下文中使用不安全代码?

如何在 react-native-webview 中启用安全上下文?