Intranet 中的 Service Worker

Service worker in an intranet

一个在内部网中运行的网络应用程序,需要使用 Service Worker API。根据规范,这只能使用 HTTPS 完成:

https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API

为了允许 HTTPS 从 Ngnix 访问我们的应用程序,我们使用 openssl 创建了自证书。当我们第一次启动应用程序时,我们会收到警告说证书不可信任,因此您必须接受它。这是意料之中的。在此之后,使用 HTTPS,但是我们得到一个异常:

An SSL certificate error occurred when fetching the script.

经过一番搜索,似乎是因为无法验证证书,所以我们不能使用Service Worker API。我们对此感到惊讶。这是否意味着 Service Worker API 只能 用于互联网 在内部网中具有证书验证程序

在你们开始指出之前,我知道有类似的帖子问同样的问题,但是 none 其中有一个直接的答案。我们可以使用 Service Worker API 和我们的约束,Intranet 并且没有证书验证器:YES/NO.

Esqew 给出了在 Intranet 中使用 Service Workers 的答案。步骤如下。

根 CA:

  • 创建根密钥
  • 创建并自行签署根证书
  • 在您要授予 'secure' 访问您使用 Service Workers 的网络的每个设备中安装根证书

为您的网站

  • 为您的网络证书创建密钥
  • 创建签名 (.csr)
  • 使用签名和 rootCA 密钥创建证书。证书包含“alt_names”非常重要,否则对于新浏览器它仍然无效。
  • 在网络服务器中安装网络证书和用于生成网络证书的密钥。