我已经解决了之前将 XML RSA 私钥转换为 PEM 文件的问题,但遇到了另一个问题,即在导入 P12 私钥时得到空数据。以下是我的步骤:
-
将 PEM 文件转换为 P12 文件
openssl> pkcs12 -export -in rsa.pem -inkey rsa.pem -out rsa.p12 -nocerts
-
读取P12文件到iOS项目
NSString *path = [[NSBundle bundleForClass:[self class]]
pathForResource:@"MyPrivateKey" ofType:@"p12"];
NSData *p12data = [NSData dataWithContentsOfFile:path];
if (![self getPrivateKeyRef])
RSAPrivateKey = getPrivateKeywithRawKey(p12data);
-
导入P12私钥
SecKeyRef getPrivateKeywithRawKey(NSData *pfxkeydata)
{
NSMutableDictionary * options = [[[NSMutableDictionary alloc] init] autorelease];
// Set the public key query dictionary
//change to your .pfx password here
[options setObject:@"MyPassword" forKey:(id)kSecImportExportPassphrase];
CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL);
OSStatus securityError = SecPKCS12Import((CFDataRef) pfxkeydata,
(CFDictionaryRef)options, &items);
CFDictionaryRef identityDict = CFArrayGetValueAtIndex(items, 0);
SecIdentityRef identityApp =
(SecIdentityRef)CFDictionaryGetValue(identityDict,
kSecImportItemIdentity);
//NSLog(@"%@", securityError);
assert(securityError == noErr);
SecKeyRef privateKeyRef;
SecIdentityCopyPrivateKey(identityApp, &privateKeyRef);
return privateKeyRef;
}
以为没有错误(OSStatus 值为 0),但 items 数组没有获取任何身份数据。我想知道是否由于错误的 OpenSSl 使用而没有获得正确的 p12 文件格式。有人成功导入p12文件吗?我已经被这个问题困扰了好几天了,如果有线索请给我建议,谢谢!
Hubert
我从互联网上得到了一些提示,以下是获取 iOS 可接受的 p12 密钥和认证文件的步骤:
将 XML 转换为 PEM
Shell> 编译 XMLSpec2PEM.java
Shell> XMLSpec2PEM rsa.xml
将输出结果保存到rsa.pem
(从...借here)
将 PEM 转换为 RSA 私钥
OpenSSL> rsa -in rsa.pem -out rsaPrivate.key
生成认证请求
OpenSSL> req -new -key rsaPrivate.key -out rsaCertReq.crt
(输入一些基本认证数据)
签署请求证明
OpenSSL> x509 -req -days 3650 -in rsaCertReq.crt -signkey rsaPrivate.key -out rsaCert.crt
将认证文件格式转换为DER(iOS可接受的格式)
OpenSSL> x509 -outform der -in rsaCert.crt -out rsaCert.der
生成PKCS12私钥(iOS可接受的格式)
OpenSSL> pkcs12 -export -out rsaPrivate.pfx -inkey rsaPrivate.key -in rsaCert.crt
无需进一步的步骤,步骤 5 和 6 中生成的文件现在可以在 iOS 中使用!
OpenSSL指令参考:
http://blogs.yaclife.com/?tag=ios%E3%80%80seckeyref%E3%80%80raw%E3%80%80key%E3%80%80rsa%E3%80%803des
http://devsec.org/info/ssl-cert.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)