首页 > 解决方案 > 在 Android 移动设备上使用 Chrome 调试 service worker

问题描述

我正在开发一个渐进式网络应用程序,为了确保它可以在移动设备上运行(特别是在 Chrome for Android 上,因为它有 90% 的用户),我正在尝试在 Android 设备上测试服务工作者。

不幸的是,在Chrome for Android上,我无法注册服务人员

提取脚本时发生 SSL 证书错误。

加载资源失败:net::ERR_CERT_AUTHORITY_INVALID


我知道服务工作者需要通过 HTTPS 提供服务,所以我有一个用于我的 webapp的自签名证书。它不受浏览器的信任,但仍然可以继续进行。使用 Firefox for Android 时,没问题我可以签名推送通知并注册服务人员,但使用 Chrome 时它不起作用

在桌面版 Chrome 上,可以使用开发工具在非安全源上启用服务工作者。我希望找到可以在移动设备上使用但不存在的等效标志。

有没有办法授权 Chrome Android 上的服务人员进行调试


我发现了一个关于同一问题的老问题,没有有用的答案并决定打开这个问题以提高知名度。

标签: androidgoogle-chrome-devtoolsservice-worker

解决方案


从您所指的其他 StackOverflow 帖子中,我可以看到解决方案在问题中。

您需要证书颁发机构crt 添加到您的 Android 信任列表中


为什么特别是证书颁发机构 .crt ?

仅仅是因为 Android 只接受 CA 证书。


如何获得 CA 证书?

通常,证书颁发机构 (CA) 充当受信任的第三方。出于调试目的,您可以充当 CA 自行颁发自签名证书。

  1. 创建根密钥:(openssl genrsa -des3 -out rootCA.key 4096警告:持有此密钥的任何人都可以代表您签署证书!)

  2. 创建并自签名根证书:openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt

请记住,您的 webapp 的SSL 证书需要使用相同的自创建 CA 生成


在 Android 设备上安装证书

获得 .crt 文件后,将其复制到设备中。然后转到Settings > Security > Install from storage。它应该检测证书并让您添加它。

要确保正确安装,请转到Trusted Credentials > User


推荐阅读