网络安全配置文件中的固定公钥是不是受信任,即使颁发它的 CA 不是?
Posted
技术标签:
【中文标题】网络安全配置文件中的固定公钥是不是受信任,即使颁发它的 CA 不是?【英文标题】:Are pinned public keys in the Network Security Configuration file trusted even if the CA that issued it is not?网络安全配置文件中的固定公钥是否受信任,即使颁发它的 CA 不是? 【发布时间】:2019-04-25 18:24:53 【问题描述】:假设我有一个应用程序将一些敏感信息传输到我的服务器。我想降低对我的用户进行中间人攻击的风险,因此我将我的服务器使用的密钥固定在Network Security Configuration file 中。
但是,假设我的应用程序的用户不信任颁发我们证书的 CA,并将其从受信任的 CA 列表中删除,或者操作系统更新删除了 CA,因为它被发现表现不佳.
理想情况下,在这种情况下,我希望我的应用拒绝连接到服务器。如果服务器提供的证书使用 pinset AND 中的密钥签名,我只希望它建立连接,该密钥来自操作系统/用户信任的 CA。在网络安全配置文件中固定密钥是否可以实现这一点?或者,无论如何,固定的密钥都值得信任吗?
【问题讨论】:
【参考方案1】:HPKP 指示浏览器在您指定的时间段内存储服务器证书的签名。使用 HPKP 并不能代替标准的证书验证。
在您的方案中,浏览器中固定的 PK 对于您的服务器提供的服务器证书有效,但由于 CA 不受信任,实际证书验证将失败。
【讨论】:
我想澄清一下 - 这不是浏览器(根据典型定义),而是一个移动应用程序,与网络相比,密钥/证书固定机制存在一些差异开发人员可能习惯了。您的知识是否专门针对 android 应用程序?如果是这样,你能指出一些关于它的文档吗? @duggulous 你是对的,标准网络浏览器和移动应用程序之间存在一些差异。我有标准 Web 开发和 android 应用程序开发的经验。我在 android 开发方面的经验已经有几年了,但是将 HPKP 与不受信任的自签名证书一起使用,就像您不受信任的 CA 示例一样,不起作用。不幸的是,我找不到很多关于这个主题的文档。以上是关于网络安全配置文件中的固定公钥是不是受信任,即使颁发它的 CA 不是?的主要内容,如果未能解决你的问题,请参考以下文章