我正在iPhone中开发一个应用程序,我连接到webService。发送我要加密的用户的密码。为此,我创建了一对公钥/私钥,私钥在服务器上解密密码,公共在iPhone的应用程序上加密密码。我创建了这对:
$ openssl genrsa -out private.pem 1024
$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
当我加密消息时,我使用此代码创建SecCertificateRef:
NSData *certData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"wspublickey" ofType:@"pem"]];
SecCertificateRef cert = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)certData);
在这个指令cert == nil之后,我花了很多时间试图理解它的帖子(我理解非对称密钥的话,但我完全没有经验实现它)。我的结论是我的证书不受信任,这就是SecCertificateCreateWithData返回nil的原因。我的问题是,如果我不想支付可靠的证书,我应该如何加密我的数据?很抱歉我对使用rya公钥证书加密数据的实现了解不多但是我迷路了,我不知道应该如何解决这个问题。谢谢你的帮助。发帖后:
"untrusted server certificate" on iPhone http://omegadelta.net/2011/01/17/ios-untrusted-server-certificate/ http://lists.apple.com/archives/apple-cdsa/2009/Jun/msg00012.html
我想要的只是命令:
$ openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
答案 0 :(得分:1)
最后我找到了我要找的东西。 CodeInChaos所说的我需要的是我的自签名证书。有了它我的代码工作正常。为此,我使用此命令:
openssl req -x509 -out public_key.der -outform der -new -newkey rsa:1024 -keyout private_key.pem -days 3650
我发现这篇文章非常有用:
它回答了很多问题。不是英文但谷歌翻译得好,所以这不是一个大问题。我希望这可以帮助有同样问题的人。
答案 1 :(得分:0)
为了安全地执行此操作,您必须使用HTTPS或SSL / TLS。如果您不想为证书支付5美元,则可以使用自签名证书并对公钥进行核心处理。无需建立自己的协议,这是浪费时间。
答案 2 :(得分:0)
问题来自文件格式。
您正在使用PEM而不是DER,它是iOS API SecCertificateCreateWithData( )