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

Are pinned public keys in the Network Security Configuration file trusted even if the CA that issued it is not?

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

但是,假设我的应用程序的用户不信任颁发我们证书的 CA,并将其从受信任的 CA 列表中删除,或者 OS 更新删除了 CA,因为它有被发现行为不端。

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

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

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