android - 在 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 上的服务人员进行调试?
我发现了一个关于同一问题的老问题,没有有用的答案,并决定打开这个问题以提高知名度。
解决方案
从您所指的其他 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 文件后,将其复制到设备中。然后转到Settings > Security > Install from storage。它应该检测证书并让您添加它。
要确保正确安装,请转到Trusted Credentials > User。
推荐阅读
- python - 点之间的线(按 id)
- c# - 在 C# 中更改 RightToLeft 属性时如何阻止表单闪烁?
- c# - 如何将实体添加到 EF Core 中的另一个实体中?
- javascript - Apps 脚本 - 内联图像
- windows - Windows 10 - 将 docker 容器直接放在本地网络上?
- python - dolphindb可以通过调用python api同时写入和查询数据吗?
- javascript - Create React App 无法在 ios 设备上加载
- python - zoneinfo:什么是新的 right 和 posix zone-name 前缀?
- homebrew - Plantuml 无法再创建 PDF
- ruby - Ruby 异常捕获并返回 false