iOS 14.8.1下如何让Safari使用Secure Enclave存储身份证书私钥
iOS Safari使用Secure Enclave存储客户端证书私钥实现方案
结论
iOS 14.8.1系统支持Safari调用存储在Secure Enclave内的客户端证书私钥,你之前的尝试失败是因为未触发系统将私钥生成在安全区域的配置条件,可通过以下方案实现。
具体实现步骤
- 核心要求:必须通过MDM(移动设备管理)下发SCEP证书配置,或使用Apple Configurator 2在设备监督模式下配置自定义SCEP负载,只有系统级下发的证书配置才允许Safari访问对应的Secure Enclave密钥。
- SCEP配置必须满足以下参数要求,才能触发系统在Secure Enclave内生成私钥:
- 密钥类型指定为ECC 256位(Secure Enclave不支持RSA类密钥的内部生成)
- 配置
KeyIsExtractable参数为false,标记私钥不可导出 - 配置
AllowEncryption参数为false,禁止私钥被明文加密导出
- 配置下发完成后,设备会自动向SCEP服务端发起证书申请,私钥全程在Secure Enclave内部生成、不会流出安全区域,签发后的证书会存入系统级密钥链,Safari访问需要客户端认证的SSL站点时可直接调用该证书,签名运算全程在Secure Enclave内部完成。
过往尝试失败原因说明
- 邮件安装PKCS#12证书:iOS系统禁止任何外部生成的私钥导入Secure Enclave,仅支持设备本地触发的安全区域内原生生成密钥,该方案天生不符合要求。
- 自研应用生成密钥:Secure Enclave内的密钥默认归属生成应用独有,没有系统级权限无法共享给Safari这类系统应用,只有MDM下发的系统级密钥链条目才对Safari开放访问权限。
- 默认Apple Configurator SCEP配置:默认配置未指定ECC密钥类型,也未设置私钥不可导出属性,不满足Secure Enclave的密钥生成触发条件,因此私钥只会生成在普通密钥链中。
注意:如果使用Apple Configurator 2开启设备监督模式,会清空设备所有现有数据,操作前请做好全量备份。
内容的提问来源于stack exchange,提问作者MFADeveloper
相关产品推荐
相关产品推荐

