Yeu*_*ung 4 ssl openssl csr ssl-certificate ios
我想用服务器进行https请求需要客户端证书身份验证.我查看了为NSURLConnection身份验证挑战创建SecCertificateRef.它按预期工作.
但是,它需要准备包含私钥的p12文件.这将是安全的,因为它需要密码来导入p12文件使用SecPKCS12Import().
但是,可能还有其他选择.那就是ios-client应该签署证书签名请求(.CSR)并让第三方(它将是服务器)签名.
对于我的搜索,我看到我可以SecKeyGeneratePair()用于生成密钥对.但我没有看到任何生成CSR的API.
真的需要openssl才能实现这个目标吗?
此外,有点偏离主题,一旦ios-client以某种方式取回签名证书.我可以SecCertificateCreateWithData()用来检索一个SecCertificateRef().但是,填写一个NSURLCredential.我还需要SecIdentityRef使用来自p12文件的
SecPKCS12Import().我怎样才能恢复一个SecIdentityRef没有SecPKCS12Import()但只是一个像crt或的证书文件der?
iOS中的安全框架中没有明确支持CSR.但是,"手动"构建CSR并不困难 - 它只是iOS运行时可用的ASN.1 DER数据块.
这是伪代码:
SecKeyGeneratePair()安全框架创建新的公钥/私钥getPublicKeyBits检索NSData形式的新公钥的方法(参见https://developer.apple.com/library/ios/samplecode/CryptoExercise/Introduction/Intro.html)getPrivateKey从Keychain中检索SecKeyRef的方法这将创建适当的CSR(以NSData的形式),可以发送给CA进行审批.
我的实现可以在GitHub上找到:http://github.com/ateska/ios-csr.