我正在开发一个渐进式网络应用程序,为了确保它在移动设备上运行(尤其是在Android的Chrome,因为它是90%的用户),我正在尝试在Android设备上测试服务工作者。
不幸的是,在Android的Chrome上,我无法注册服务人员:
获取脚本时发生SSL证书错误。
未能加载资源:net::ERR_CERT_AUTHORITY_INVALID
我知道服务人员需要在HTTPS接受服务,所以我为我的webapp提供了一个自签名证书。它不被浏览器信任,但仍然有可能继续。在Android上使用Firefox时,我可以登录推送通知和注册服务人员,但在Chrome上就不行了。
在Chrome for desktop上,可以使用开发工具在不安全的来源上启用服务人员。我希望找到可以在手机上使用的等效标志,但没有。
有没有办法授权 Chrome Android 上的服务工作者进行调试?
我发现了一个关于同样问题的老问题,没有有用的答案,于是决定公开这个问题。
从你提到的另一篇StackOverflow帖子中,我可以看到问题的解决方案。
您需要将证书颁发机构crt添加到您的Android信任列表中。
为什么专门使用证书颁发机构 .crt ?
仅仅因为Android只接受CA证书。
如何获得CA证书?
通常,证书授权中心(CA)充当受信任的第三方。出于调试目的,您可以充当CA自己颁发自签名证书。
> < li>
创建根密钥:< code > OpenSSL gen RSA-des 3-out rootca . key 4096 (警告:持有此密钥的任何人都可以代表您签署证书!)
创建根证书并对其进行自签名:openssl req-x509-new-node-key rootCA. key-sha256-day 1024-out rootCA.crt
请记住,您的webapp的SSL证书需要使用同一个自行创建的CA来生成。
在Android设备上安装证书
获得. crt文件后,将其复制到设备中。然后转到设置
要确保正确安装,请转到可信凭据
我通过端口转发解决了这个问题。你可以在我的原始回答中找到更多信息:https://stackoverflow.com/a/56146180/5048121