我正在开发一个渐进式网络应用程序,为了确保它能够在移动设备上运行(特别是在Chrome for Android上,因为它有90%的用户使用),我&#39 ;我试图在Android设备上测试服务工作者。
不幸的是,在 Chrome for Android 上,我无法注册服务工作者:
获取脚本时发生SSL证书错误。
无法加载资源:net :: ERR_CERT_AUTHORITY_INVALID
我知道服务工作者需要通过HTTPS提供服务,因此我的webapp有一个自签名证书。它不受浏览器的信任,但无论如何仍然可以继续。使用Firefox for Android时,没问题我可以签署推送通知并注册服务工作者,但使用Chrome无法正常工作。
在Chrome for Desktop上,可以使用开发工具通过非安全源启用服务工作者。我希望找到我可以在移动设备上使用的等效标志,但不存在。
有没有办法授权Chrome Android上的服务工作者进行调试?
我发现了一个老问题,对同一问题没有任何有用的答案there,并决定打开这个问题以获得可见性。
答案 0 :(得分:2)
从你引用的其他StackOverflow帖子中,我可以看到解决方案就在问题中。
您需要将证书颁发机构 crt添加到您的Android信任列表。
为何具体使用证书颁发机构.crt?
只是因为Android只接受CA证书。
如何获得CA证书?
通常,证书颁发机构(CA)充当受信任的第三方。出于调试目的,您可以充当CA以自行发布自签名证书。
创建根密钥:openssl genrsa -des3 -out rootCA.key 4096
(警告:持有此密钥的任何人都可以代表您签署证书!)
创建并签署根证书:openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
请记住,您的webapp的 SSL证书需要使用相同的自创CA 生成。
在Android设备上安装证书
获得.crt文件后,将其复制到设备中。然后转到设置>安全>从存储中安装。它应该检测证书并允许您添加它。
要确保正确安装,请转到受信任的凭据> 用户
答案 1 :(得分:0)
我通过portforwarding解决了这个问题。您可以在以下原始答案中找到更多信息:https://stackoverflow.com/a/56146180/5048121