将我的客户根CA证书存储在我的we应用程序的浏览器会话存储中是否可行?

问题描述

我有一个基于桌面的应用程序,具有硬编码的根CA。我的应用程序可以获取经过数字签名的资源,并使用提供的证书进行验证,然后使用存储在应用程序中的Root CA。

现在,我将桌面应用程序移至基于在线的Web应用程序。

我无法将我的根CA存储在脱机信任存储中(不练习让用户手动安装)。

所以我在想,由于我的Web应用程序和后端服务器使用TLS,一旦完成初始HTTPS握手,我的Web应用程序就有可能从我的服务器下载我的Root CA并将其存储在本地存储中浏览器,以便可以用来验证数字证书?

请注意,我不是指客户端应用程序/服务器身份验证,这是使用标准的HTTPS / TSL和CA签名的服务器证书来完成的。

我指的是我的应用程序的自定义功能登录用户创建资源并对其进行签名,然后将其发送到后端服务器,并且可以由Web应用程序的其他用户下载,这些用户需要能够检查资源的签名。

我希望这是有道理的,任何建议都会很棒。

谢谢

编辑

如果我描述应用场景,可能会有所帮助。

因此,医生使用用户名密码登录到Web应用程序,然后我的后端服务器对用户进行身份验证。然后,他在Web应用程序中编写了一个处方,并用他的私钥(从云HCM获得)对其进行签名,然后将签名的处方上载并验证,然后存储在我的后端数据库中。

现在,一名药剂师登录到其前端Web应用程序并下载处方。此时,在我的桌面版本中,签名是通过使用桌面应用程序中的硬编码根CA构建信任链来验证的。但是,由于我希望对网络应用程序喜欢它,所以我无法做到这一点。因此,我在想我的Web应用程序可以下载根CA,因为它现在可以通过HTTPS安全了吗?

我还认为,由于这将是一个在线Web应用程序,并且通过HTTPS进行连接,所以甚至有必要这样做,因为当Dr签署并上传处方文档时,我的服务器代码对其进行了验证。然后,药剂师通过SSL从我的服务器应用中下载该文件时,它已经受到信任了吗?下载根CA是否更安全或有必要(或可以接受)?

仅作澄清。在这种情况下,根CA是我无法添加到OS离线受信任存储区的自签名CA证书。当我的应用程序是基于桌面的应用程序时,这不是问题。我的应用信任此证书,因为它是经过硬编码的。

我希望这是有道理的。

再次感谢

解决方法

根或任何证书都是公共的,可能不需要使用SSL / TLS进行保护,如某些评论中所述。

话虽如此,由于它是一个Web应用程序,因此用户可以信任服务器对签名内容的验证。

如果要在客户端上对其进行验证,则可以在客户端浏览器上缓存根证书。您甚至可以使用localStorage在浏览器上进行长期缓存。

,

但是,由于我希望对网络应用程序喜欢它,所以我不能这样做。因此,我在想我的Web应用程序可以下载根CA,因为它现在可以通过HTTPS安全了吗?

我在这里感到困惑。需要明确的是,仅在客户端验证了服务器提供的证书之后,HTTPS / TLS会话才会启动。在这里了解TLS握手过程很重要。TLS握手过程包含两个重要步骤,

  1. Client-Hello
  2. 服务器您好

在Server-Hello步骤中,服务器将其证书提供给客户端,客户端只有在证书的有效性检查通过后才接受证书,有效性检查之一是

证书是否由已知的证书颁发机构颁发(Root CA /中级CA)

仅在通过有效性检查之后,HTTPS / TLS会话才变为活动状态,在此之前,整个通信都在TCP中进行,但不是在TLS / HTTPS中进行。

有几种方法可以解决问题,我可以想到的是

  1. 从公认的证书颁发机构获取服务器证书(推荐)
  2. 向最终用户提供手册以接受自签名证书为受信任的