2012-03-20 3 views
2

iPhone에서 webService에 연결할 앱을 개발 중입니다. 암호화하려는 사용자의 암호를 보내려합니다. 이를 위해 공용/개인 키 쌍을 만들었고, 개인 키는 서버에있어 암호를 해독하고 공개는 iPhone의 암호를 암호화 한 곳에서합니다. 나는 내가 SecCertificateRef 만들려면이 코드를 사용하여 메시지를 암호화 할 때ios에서 신뢰할 수없는 인증서로 데이터 암호화

$ openssl genrsa -out private.pem 1024 
$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout 

이 :이 명령 인증서 == 전무 후

NSData *certData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"wspublickey" ofType:@"pem"]]; 
SecCertificateRef cert = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)certData); 

를, 내가하려고 많은 시간을 통과 나는 함께 쌍을 작성한 (비대칭 키가 찢어지는 것을 이해하지만 완전히 구현하지 못했습니다.) 내 결론은 내 인증서가 신뢰할 수 없으며 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 

답변

1

마지막으로 나는 내가 찾고있는 것을 발견했다. CodeInChaos처럼 자기 서명 인증서가 필요합니다. 그것으로 내 코드는 잘 동작한다. 많은 질문에

http://blog.iamzsx.me/show.html?id=155002

그것은 응답 :

openssl req -x509 -out public_key.der -outform der -new -newkey rsa:1024 -keyout private_key.pem -days 3650 

나는 정말이 게시물에 유용한 발견 : 그것을 위해 나는이 명령을 사용합니다. 영어로만 번역 된 것이 아니기 때문에 잘 번역되었으므로 큰 문제는 아닙니다. 나는 이것이 동일한 문제를 가진 누군가를 돕기를 바랍니다.

0

HTTPS 또는 SSL/TLS. 인증서를 $ 5 밖으로 껍질 싶지 않다면 자체 서명 된 인증서를 사용하고 공개 키를 하드 코어로 사용할 수 있습니다. 자신의 프로토콜을 작성할 필요가 없습니다. 이는 시간 낭비입니다.

+3

으로 생각합니다. 자체 서명 인증서를 사용하고 싶다고 생각합니다. 공개 키를 앱에 하드 코딩하면 완벽하게 잘됩니다. – CodesInChaos

+0

@CodeInChaos aah, 네, 틀림없이 더 안전합니다. – rook

+0

정확한 순간에 https 서버가 없기 때문에 사용자 암호를 보호하는 솔루션을 검색하는 순간에는 그럴 수 없습니다. – Jpellat

0

문제는 파일 형식에서 왔습니다. DER 대신 PEM을 사용하고 있습니다. iOS API의 이진 형식은 SecCertificateCreateWithData()

관련 문제