【发布时间】:2021-01-05 20:38:04
【问题描述】:
我有一个基于桌面的应用程序,它有一个硬编码的根 CA。我的应用程序可以获取数字签名资源并使用提供的证书验证这些资源,并使用存储在应用程序中的根 CA。
现在,我正在将我的桌面应用程序迁移到基于在线的网络应用程序。
我无法将我的根 CA 存储在离线信任存储中(不习惯让用户手动安装)。
所以我在想,由于我的 Web 应用程序和后端服务器使用 TLS,一旦初始 HTTPS 握手完成,我的 Web 应用程序是否可以从我的服务器下载我的根 CA 并将其存储在本地存储中浏览器,以便它可以用于验证数字证书?
为了清楚起见,我不是指客户端应用程序/服务器身份验证,这是使用标准 HTTPS/TSL 和 CA 签名的服务器证书来处理的。
我指的是我的应用的自定义功能。登录的用户创建资源并对其进行签名,然后将其发送到后端服务器,并且可以由需要能够检查资源签名的Web应用程序的其他用户下载。
我希望这是有道理的,任何建议都会很棒。
谢谢
编辑
如果我描述一下应用场景可能会有所帮助。
因此,医生使用用户名和密码登录 Web 应用程序,我的后端服务器对用户进行身份验证。然后,他在网络应用程序中编写了一个处方,并使用他的私钥(从云 HCM 获得)对其进行签名,签名的处方被上传并验证,然后存储在我的后端数据库中。
现在,药剂师登录到他们的前端网络应用并下载处方。此时,在我的桌面版本中,通过在桌面应用程序中使用硬编码的根 CA 构建信任链来验证签名。但由于我希望将其用于 Web 应用程序,所以我不能那样做。所以我在想我的网络应用可以下载根 CA,因为它现在通过 HTTPS 是安全的吗?
我还认为,由于这将是一个在线 Web 应用程序,并且通过 HTTPS 进行连接,这甚至是必要的,因为当 Dr 签署并上传处方文件时,我的服务器代码对其进行了验证。然后当药剂师通过 SSL 从我的服务器应用程序下载它时,它已经被信任了吗?下载根 CA 是否更安全或有必要(或可接受)?
只是为了澄清。此实例中的根 CA 是自签名 CA 证书,我无法将其添加到 OS 脱机受信任存储区。当我的应用程序是基于桌面的应用程序时,这不是问题。我的应用信任此证书,因为它是硬编码的。
我希望这是有道理的。
再次感谢
【问题讨论】:
-
应用程序的在线版本如何工作?您是否有 Javascript 从本地存储中检索 CA 证书并使用它来验证信任链? (听起来很难)
-
感谢您的回复。用户登录到在线 Web 应用程序并对后端 Node JS 服务器进行身份验证。它实际上是一个非常简单的应用程序,但离线桌面版本已将 Root CA 编码到应用程序中。我认为一旦初始网络应用程序到服务器 SSL/TLS 发生,我可以安全地临时下载根证书并验证网络应用程序中的资源/文档签名?谢谢
-
究竟哪款软件能够安全地临时下载根证书并验证资源/文档签名?
标签: web-applications certificate progressive-web-apps digital-signature x509certificate