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

Posted

技术标签:

【中文标题】如何为公钥固定(SSL 固定)生成 iOS 证书【英文标题】:How to generate iOS certificate for public key pinning(SSL pinning) 【发布时间】:2017-01-24 07:26:09 【问题描述】:

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

【问题讨论】:

【参考方案1】:

公钥固定意味着您在尝试启动安全通信时检查 TLS 证书的公钥。我看到了两种方法可以做到这一点:

1) 使用 OpenSSL 工具生成自签名证书。将其安装在您的后端并强制执行 TLS。您必须将此证书添加到 iOS 设备上的受信任列表中,否则将无法使用。

2) 使用真正的 Let's Encrypt 免费 TLS 证书:https://letsencrypt.org/

为了能够给出正确准确的答案,我需要知道它是供个人使用还是公共使用,以及您是否可以完全控制后端。

【讨论】:

您能否详细解释一下,供个人和公共使用。 要测试个人用途,请创建一个简单的本地托管网站,例如 WAMP(如果您使用的是 Windows)。我认为本指南:link 可以向您展示如何向其添加证书。在此之后,您将不得不提取公钥。如果您必须固定现有网站,则必须从现有证书中提取公钥。

以上是关于如何为公钥固定(SSL 固定)生成 iOS 证书的主要内容,如果未能解决你的问题,请参考以下文章

SSL pinning - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书

如何获取 SSL 固定的公钥哈希?

如何为使用 OpenSSL 生成的证书提供多行证书名称 (CN)

如何允许用户在 iOS 中使用 AFNetworking 信任和固定自签名 SSL 证书

证书固定 - 仅公钥?

用openssl生成的ssl证书和付费的有啥区别