问题标签 [public-key-pinning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

https - 我们应该为外部 https 服务处理证书/公钥固定吗?

我正在编写一个 Android 应用程序,它将向外部 HTTPS 静态资源发出一些 http 请求 - https://external_server/resources(我无法控制外部服务器)

我正在考虑为 external_server 服务器处理证书/公钥固定。

我脑海中突然冒出一个问题:如果 external_server 更改 SSL 证书/公钥怎么办?如果证书/公钥更改。我必须重新部署我的应用程序?

有任何想法吗?谢谢!

0 投票
1 回答
1644 浏览

android - 使用 X509TrustManagerExtensions checkServerTrusted 固定公钥

用于 HTTPS TLS 连接的公钥固定。

低于 17 的 Android API 存在一个问题,它会在公钥固定的情况下启用 MITM(中间人)攻击。这已在下面的链接中解释。

https://www.cigital.com/blog/ineffective-certificate-pinning-implementations/

因此,在低于 17 的 Android 最小 sdk 中,即低于 Android 版本 4.2,我们需要使用只有服务器根证书的 Android 密钥库初始化X509TrustManager (而不是默认密钥库;它会在设备中安装所有证书)。这有助于在执行公钥固定之前清理从服务器接收到的叶证书。

从 Android API 17 开始,Android 引入了X509TrustManagerExtensions,它在操作系统级别执行此根清理。

https://developer.android.com/reference/android/net/http/X509TrustManagerExtensions.html

我的问题:

如果有人能提供一个示例,说明如何实现 X509TrustManagerExtensions 提供的以下方法以进行根目录清理,我将很高兴。

我对以下内容感到困惑。

  1. host; 它应该是域 URL 吗?有 https 还是没有?还是应该是完整的 url(域 + 相对路径)

  2. 如何创建一个瞬间X509TrustManagerExtensions?X509TrustManagerExtensions 的构造函数X509TrustManager作为输入。我们是否使用 android 默认密钥库创建此 X509TrustManager?

代码片段(不工作):

例外: 未找到证书路径的信任锚

可能的安全风险: 使用KeyStore.getDefaultType()

任何帮助将不胜感激。

0 投票
1 回答
901 浏览

android - 如何使用相同的密钥更新 certbot/letscrypt 证书?

我对 SSL 很陌生。

我已经使用 cerbot/letscrypt [nginx/Ubuntu 14.04] 实现了 SSL。我还在 Android 应用程序上完成了公钥 SSL 固定。一切都在生产中并且工作正常。

但是一旦证书过期,我想用相同的密钥更新证书,以防止任何强制的应用程序更新。

请让我知道有什么办法可以解决。

先感谢您。

0 投票
1 回答
615 浏览

ssl - 如何为公钥固定生成 iOS 证书(SSL 固定)

我想在我的应用程序中使用 SSL 固定(公钥固定)。我是新手。有人可以回复我为 iOS 生成公钥、csr 文件和 SSL 证书的简短步骤。

0 投票
1 回答
453 浏览

ssl - SSL - 公钥固定混淆

当一些被破坏时如何SSL key pinning防止?MITM attacksCA

我的理解comprising CA是,私钥被泄露,攻击者很容易symmetric key习惯于加密数据。我对吗?

另一件事,如果public key在轮换证书并且key pinning我们匹配公钥时保持不变,我们怎么知道密钥(我们正在获取)来自原始证书?

我真的不明白这个概念。谁能一步一步详细说明?

我已经解决了这个问题,但无法真正得到答案。

0 投票
1 回答
55 浏览

c - 查找频繁出现的元素的总数

我最近正在研究一组数字,我有大量垂直存储的数字序列。我正在计算哪个数字出现了多少次,然后我选择了命中次数高的数字。

我的代码如下所示:

它适用于简单的 (1,2,3,4) 数字,我得到我的每页频率计数,我看到最高计数的数字,但在 ex。 139595776 139538432 139534336 139632640 这些数字并没有显示我的最高计数,而是我得到 SEGMENTATION FAULT(core dumped)

任何帮助将不胜感激

0 投票
1 回答
1556 浏览

android - Okhttp - 证书固定和公钥固定

我想提高我的 Android 应用程序的安全性。我正在使用 OkHttp 版本 3。

如何:

1) 将证书固定与 OkHttp 一起使用。

2) 将公钥固定与 OkHttp 一起使用。

当我这样做时:

证书固定工作。但是公钥固定呢?如何启用它?

0 投票
1 回答
1348 浏览

android - 使用 Google Volley 进行 SSL 固定

我通过提及我迄今为止尝试过的内容来开始我的问题:

我的应用程序中没有证书,我只使用 SHA256 密钥,互联网上的大多数答案都需要应用程序中的物理证书才能将其加载到密钥库中,我没有。

我收到以下错误:

1) TrustKit它需要编译 SDK 24 及更高版本,但我有 23 个并且很多支持库与 SDK 23 同步,所以我无法更改所有这些,它可能会在某个时候使我的应用程序崩溃。

2) CWAC-NetSecurity我已经在我的代码中实现了这一点,而没有使用 Android N 安全设置,我也遵循了 git 页面上给出的指令,但无法从中将 sslSocketfactory 传递给 Volley,它有 OkHTTP 的示例。所以它也给出了上述错误。

我已经用 OKHttp 的 CertificatePinner 试过了,它也不适合我。同样的错误。我也尝试将 hostNameVerifier 和 sslSocketFactory 传递给 HttpsUrlConnection 但同样的错误。

通过使用我们的 iOS 开发人员实现的 trustKit,它正在为他工作。

提前致谢。

请在这里分享您的宝贵意见,以便我理解这个 SSL 固定概念。

0 投票
0 回答
100 浏览

iis - 公钥固定不阻止任何东西

我正在尝试在我的 IIS 服务器上实现“Public-Key-Pinning”,但即使我输入了错误的哈希,该页面仍然可以访问而没有任何错误(在 google chrome 上测试)

标题如下

我知道将“max-age”值设为 90 毫无意义,但我只是在测试标题行为。

我使用https://report-uri.io/home/pkp_hash生成我的哈希并使用根证书颁发机构

在这里,我如何尝试使那些使用无效密码的人无法访问我的网站

  1. 将标头配置为 90 秒的“Max-age”
  2. 在谷歌浏览器中导航到网站
  3. 修改表头的pin-sha256放一个无效(替换一个字母)
  4. 关闭谷歌浏览器
  5. 导航回我的网站

我虽然会遇到“无效的 pin 错误”(我在 90 秒内完成了),但什么也没发生

我究竟做错了什么?

0 投票
1 回答
466 浏览

android - 使用 Trustkit 和 Google Cloud Endpoints 实施 SSL 固定

我正在使用 Google Cloud Endpoints 与我的 Android 应用的应用引擎后端进行交互。我想实现公钥/SSL 固定。对于 Android N 及更高版本,这样做很容易,但我想为早期版本的 Android 实现固定。似乎一种常见的方法是使用Trustkit

Trustkit 链接上的入门说明,描述了如何通过设置 SSLSocketFactory 来进行设置,例如

但是由于连接的设置方式,我不确定如何将其应用于 Google Cloud Endpoints,例如,这是在我的代码中为 Google Cloud Endpoints 设置的方式

我想知道的是如何在 Android 的早期版本(例如 API16-API23)中实现 SSL 固定,同时仍然以与我的应用程序相同的方式连接到 Google Cloud Endpoints,如上所示?

如果可能的话,我想使用 Trustkit,也许有一种不同的方式可以设置如何连接我的 Api 方法以便我可以使用它?如果这是不可能的,我可以使用 Trustkit 的替代品吗?或者只是一种完全不同的方式来实现 SSL 固定,同时仍然以这种方式使用 Google Cloud Endpoints?