android - 即使颁发它的 CA 不可信,网络安全配置文件中固定的公钥是否可信?

标签 android ssl certificate-authority certificate-pinning public-key-pinning

假设我有一个应用程序可以将一些敏感信息传输到我的服务器。我想降低我的用户受到中间人攻击的风险,所以我将服务器使用的 key 固定在 Network Security Configuration file 中。 .

但是,假设我的应用程序的用户不信任颁发我们证书的 CA,并将其从受信任的 CA 列表中删除,或者操作系统更新可能删除了 CA,因为它被发现行为不当.

理想情况下,在这种情况下,我希望我的应用程序拒绝连接到服务器。如果服务器提供的证书是使用 pinset AND 中的 key 签名的,我只希望它建立连接来自操作系统/用户信任的 CA。在网络安全配置文件中固定 key 是否可以完成此操作?或者,固定 key 无论如何都是可信的吗?

最佳答案

HPKP 指示浏览器在您指定的时间段内存储您的服务器证书的签名。使用 HPKP 不会取代标准证书验证。

在您的场景中,浏览器中固定的 PK 将对您的服务器提供的服务器证书有效,但实际的证书验证将失败,因为 CA 不受信任。

关于android - 即使颁发它的 CA 不可信,网络安全配置文件中固定的公钥是否可信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55855510/

相关文章:

android - 如何为 id 属性设置 XSD 限制

certificate-authority - 用于管理 Github SSH 证书的 SSH CA

Android - 使用 HTTPS 和 SSL 的安全性 - 未知证书颁发机构 - NativeCrypto 异常

php - 安全地更新证书颁发机构证书

android - 如何在特定时间后(例如 10 分钟后)更新 firebase 数据库中的值?

android - 即使手机处于 sleep 状态,也会在后台运行上传过程

c# - 对 SSL 的 HttpWebRequest 失败

c++ - 无法使用 OpenSSL 1.1.1 从 ClientHello 检索服务器名称 (SNI)

java - 带有 Java 异常发送消息的 Mongo SSL

android - kotlin 应用程序中的 DataBinding 出错