ios – 如何使SecPKCS12Import正确导入有效的p12文件

ios – 如何使SecPKCS12Import正确导入有效的p12文件,第1张

概述我解决了将 XML RSA私钥转换为PEM文件的前提问题,但是遇到另一个问题,导入P12私钥时会得到空数据.以下是我的步骤: >将PEM文件转换为P12文件 openssl> pkcs12 -export -in rsa.pem -inkey rsa.pem -out rsa.p12 -nocerts >将P12文件读入iOS项目 NSString *path = [[NSBundle bundl 我解决了将 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,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数组没有获取任何身份数据.我想知道如果我没有得到正确的p12文件格式由于OpenSSl使用错误.有没有人成功导入p12文件?我已经在这个问题上停留了几天,请给我建议,如果你有线索,谢谢!

休伯特

解决方法 我从互联网获得了一些提示,以下是获取iOS可接受的p12密钥和认证文件的步骤:

>将XML转换为PEM
外壳>编译XMLSpec2PEM.java
外壳> 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

没有进一步的步骤,现在可以在iOS中使用步骤5和6中生成的文件!

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

总结

以上是内存溢出为你收集整理的ios – 如何使SecPKCS12Import正确导入有效的p12文件全部内容,希望文章能够帮你解决ios – 如何使SecPKCS12Import正确导入有效的p12文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存