- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;DR 版本:是否有任何方法可以将服务器证书传递给 iOS 客户端,同时不涉及传递服务器的私钥?
我编写了一个与我的 macOS 服务器应用程序通信的 iOS 客户端应用程序(因此我可以控制两端)。我已经使用自签名证书实现了证书锁定,以提高安全性。为了在开发过程中实现这一点,我将服务器证书硬编码到 iOS 客户端应用程序中,并告诉客户端仅连接到在 TLS 握手期间为您提供确切证书的服务器。一切都很好。
但是在现实世界中,我将这个系统作为一个集合(一台服务器,每个客户有多个客户端)出售,所以我不能将服务器证书硬编码到 iOS 客户端中。我的计划是将服务器证书带外(通过电子邮件)发送到 iOS 客户端,如下所述:Making Certificates and Keys Available To Your App:
Apps can only access keychain items in their own keychain access groups.
To use digital identities in your own apps, you will need to write code to import them. This typically means reading in a PKCS#12-formatted blob and then importing the contents of the blob into the app's keychain using the function
SecPKCS12Import
One way to provision an identity is via email. When you provision a device, send the associated user an email with their client identity attached as a PKCS#12 file.
我的问题是 .p12 文件包含证书和 服务器的私钥 - 传递私钥似乎也是错误的。
有没有其他方法可以将服务器证书传递给 iOS 客户端,同时不涉及传递服务器的私钥?
谢谢!!!
最佳答案
我在这里想太多了,解决方案实际上很简单。
我只需要使用 cert.myCustomExt1234
等自定义扩展将服务器的公共(public)证书带外通过电子邮件发送到客户端设备。这是因为 .crt
扩展名已被 iOS 占用,因此您必须注册您的应用程序才能处理自定义扩展名 (see apple docs here) .然后在我的应用程序中,我可以使用带外交付的服务器公共(public)证书执行证书固定的所有逻辑。
关键是将文件扩展名更改为 iOS 尚未声明的内容。
关于iOS - 如何将服务器证书获取到 iOS 客户端钥匙串(keychain)中以进行固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865568/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!