问题标签 [certificate-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 投票
0 回答
1689 浏览

react-native - ssl pinning 与 react native 和 ios

我想在我的项目中实现 ssl pinning(固定公钥)。为此,我使用 react-native-ssl-pinning。

我按照说明进行安装,它适用于 android。

但是,在 iOS 上,我总是收到“已取消”错误。从 xcode 运行时,我收到此错误:

HTTP 加载失败,0/0 字节(错误代码:-999 [1:89])

证书似乎有问题,但我无法识别它。

根据苹果的文档,证书必须:

  1. 具有大于或等于 2048 位的密钥大小
  2. 使用 SHA-2 系列算法
  3. 在主题备用名称扩展中显示服务器的 DNS 名称
  4. 包含一个包含 id-kp-serverAuth OID 的 ExtendedKeyUsage (EKU) 扩展
  5. 有效期为 825 天或更短(在证书的 NotBefore 和 NotAfter 字段中表示)。

我使用的证书似乎是有效的,我决定在这里询问是否有人有一个可行的解决方案,或者在我自己搜索不成功后至少有一个提示。

0 投票
1 回答
46 浏览

ios - 并发请求中的证书固定 Swift

我正在用 swift 5 编写一个需要连接到我的服务器的应用程序。我有完整的证书链。我已经实施了证书固定,当我有一个请求时我有一个成功的连接,但是当同时有多个请求时它失败了为什么证书固定不能同时处理多个请求?

0 投票
2 回答
236 浏览

graphql - graphql 是否支持证书锁定?

如果我理解正确,移动应用程序的 aws + graphql 与 Firebase 实时数据库非常相似。由于在 后台支持firebase 博客证书固定。我的问题是:graphql 是否支持证书固定?

0 投票
1 回答
201 浏览

openssl - 带有弱密码的 iOS 13 证书固定停止工作但在 iOS 12 中工作正常

我很好奇通过 NWProtocolTLS.Options() 传递弱密码。因为它在 iOS 12 中运行良好,但在 iOS 13 Apple 上我猜他们做了一些改变,所以它停止了。

这里的一件事是:OpenSSL 如何使用弱密码(TLS_DHE_RSA_WITH_AES_256_GCM_SHA384)并建立连接。以及为什么不使用 iOS 13 Network.framework。

基本上,我的 Socket 服务器已经被弱密码TLS_DHE_RSA_WITH_AES_256_GCM_SHA384冻结了,这是我使用 WireShark 通过 OpenSSL 从 Server Hello 捕获的。所以现在我通过以下方法使用 iOS 13 传递这个密码,但它不起作用。

注意:我们已经提出了反馈助手查询,但我们仍在等待他们。这不是 Web Socket,我们通过服务器 Wifi 热点连接。

不知何故,我们在 iOS 的 OpenSSL 库(https://github.com/levigroker/GRKOpenSSLFramework)的帮助下解决了这个问题,但是在长数据轮询和字节缓冲机制之后,在处理更长的数据时面临很多问题。

在 OpenSSL iOS App 中查看 Client Hello 后,它通过了 86 个密码及其工作。

但是在传递客户端 Hello 的 iOS Network.framework 中,它通过了 36 个密码并且它不起作用。

如果有人想查看 WireShark 数据包,请添加评论,我将进一步附上。

所以任何想法或帮助表示赞赏!

0 投票
1 回答
384 浏览

android - 是否可以将 DownloadManager.Request 限制为特定的服务器证书?

作为提高应用程序安全性的一部分,我想保护我的客户免受“中间人”攻击。

我有一个常见的用例,我的应用程序从 CDN 服务器下载大文件(10-50 兆)。要做到这一点 - 我正在使用系统的DownloadMnager

有没有办法TrustManager通过它的 API 设置任何特定或特定的服务器证书密钥?有没有其他方法可以将请求固定到特定的受信任服务器?

看起来没有这样的 API,但如果真的是这样,我会感到惊讶,因为 GooglePlay 使用系统的下载管理器来下载 apk,然后安装它们......

0 投票
0 回答
91 浏览

ssl - 证书固定 - 刷新固定的证书机制

我正在研究一个客户端架构,我们计划将我们的客户端固定在我们的服务器上。我的服务器叶证书在我们的产品生命周期中可能会发生变化,这就是为什么我们需要一种刷新机制来支持具有嵌入式证书的较早发布的客户端。

这是我计划的两种方法:

计划使用一组备用公钥/私钥对,私钥保存在 HSM 中。公钥嵌入在客户端中。

方法1:

在叶子到期时

颁发可以在公共 Internet 上下载的叶证书 pinset。

在客户端上,下载这个带有固定根证书的叶子 pinset。

如果下载成功,请使用这个新的叶子 pinset 并将其固定用于所有后续 HTTP 调用。

如果 Leaf + Root 过期

如果由于某种原因,root 也过期了,或者 root 已更改为新的提供程序。

在客户端,下载带有根证书的叶子 pinset -> 由于根过期而失败。

刷新root,下载由备份私钥签名的新root pinset。这是一个未固定的呼叫。

下载后使用客户端嵌入的备份公钥验证签名。

如果成功,请使用此根 pinset,将其固定以下载叶子。使用下载的叶子并将其固定以进行后续的 http 调用。

方法2:

使上述方法更加精简,并完全避免根针集。

使用备份私钥对叶子 pinset 进行签名,并保留可以在公共 Internet 上下载的 pinset。

在客户端刷新下载时,使用未固定调用下载。

下载成功后,使用备份 pub key 进行验证,并将其用于所有 http 调用。

我对上述 2 种方法的问题是,方法 2是否为安全漏洞留下任何空间,总体而言,我觉得必须在客户端处理较少数量的人工制品是可行的方法,但我不想以任何方式损害安全性。

0 投票
0 回答
162 浏览

android - 在 Android 中为 SSL 固定添加多个 .bks 文件

我将 OkHttpClient 库用于 HTTP 请求,并在“res/raw”文件夹中有两个“.bks”文件用于进行 SSL 固定。我编写了以下代码来获取一个“.bks”文件。但是如何添加多个文件?

  • dkhymnow.bks

  • dpsandroid.bks

我希望有人能帮助我!

0 投票
1 回答
51 浏览

okhttp - OkHttp 如何使用证书固定处理不匹配的域?

假设我为特定域固定了一个证书:

OkHttp 如何处理对其他域(例如api.domain2.com)的请求?

  • “没有匹配的证书,没有 bueno --> SecurityException”

  • “没有匹配的证书,没问题++->完成请求”

++前提是 domain2 的证书仍由操作系统级受信任机构列表中列出的 CA 签名。

0 投票
1 回答
259 浏览

ios - 在 iOS 中使用带有 AVPlayer 的固定证书

有没有办法让 AVPlayer 在 iOS 中强制执行证书固定?

我们的视频加载代码基本上是:

我们可以使用此委托方法使用 URLSession 进行证书固定:https ://developer.apple.com/documentation/foundation/urlsessiondelegate/1409308-urlsession 。但是我还没有为 AVPlayer 找到一种类似的方法,如果有的话。

谢谢你的帮助!

0 投票
1 回答
83 浏览

ios - 适用于 iOS 的 Google Analytics(分析)SDK 是否具有 SSL 固定?

我正在使用来自https://developers.google.com/analytics/devguides/collection/ios/v3/sdk-download的 Google Analytics SDK v3.17

我想知道这个 SDK 是否实现了 SSL pinning。我已经固定了我的后端端点以防止中间人攻击,但我不知道我是否还必须固定谷歌分析。

谢谢你。