2012-03-15 9 views
2

Google 서버에서 사용자의 공개 키를 검색 할 응용 프로그램에서 작업하고 있습니다. 일단 공개 키를 사용하여 RSA 암호화를 수행해야합니다. 서버에서 가져온 공개 키는 Base64로 인코딩됩니다.iOS에서 RSA 공개 키 사용

iOS 키 체인에 RSA 암호화 기능을 수행 할 수 있도록 공개 키를로드하려면 어떻게해야합니까? 인증서 로딩은 사소한 것 같지만 원시 공개 키는 없습니다.

답변

0

공개 키에서 ASN.1 헤더를 제거하고 키 체인으로로드하는 방법을 설명하는 필수 코드를 Apple 사이트에서 발견했습니다.

+2

발견 한 것에 대한 링크를 제공 할 수 있습니까? – trojanfoe

+1

다음은 개인 키를로드하는 것과 관련된 주제 인 Apple Dev 포럼의 링크입니다 : https://devforums.apple.com/message/684705 공개 키를로드하는 것은 공개 키를 지정하기 위해 kSecAttrKeyClass를 전환하는 문제였습니다. –

+0

[Chris Luke] (http://blog.flirble.org/2011/01/05/rsa-public-key-openssl-ios/)에서 이에 대해 씁니다. – bobobobo

1

공개 키를 전송하는 일반적인 방법은 인증서가 인증 된 것입니다. 일부 CA가 서명하여 인증서가 진짜임을 증명합니다.

아니면 SSH 공개 키에 대해 이야기하고 있습니까? 이 경우을 사용하려면 특별한 ssh 가능 앱이 있어야합니다.이 키는 대개 iOS 키 체인에 저장되지 않습니다.

+0

불행하게도, 서버는 Bas64 인코딩 된 ASN.1 형식의 모든 공개 키. 너무 많은 다른 기존 클라이언트가 서버를 사용하므로 서버를 변경할 수 없습니다. 그리고 우리는 인증을 위해 키를 사용하지 않기 때문에 인증서에 키를 가지고있을 필요가 없습니다. –

+0

인증서는 일반적으로 base64로 인코딩 된 asn1로 인코딩 된 x509 래핑 공개 키로 인코딩됩니다. 'openssl x509 -incert -text'가 읽을 수있는 출력을 주는지 확인해야합니다. 그렇지 않으면 어쩌면'openssl x509-yourcert -inform DER -text' –

4

"wrong" 방법이이기 때문에 지원되지 않습니다.

"오른쪽"은 a certificate을 사용하는 것입니다.

to quote "Quinn The Eskimo!".

이것은 놀랍게도 쉽습니다. 이 경우를 처리하기 위해 키 체인에 인증서를 추가 할 필요가 없습니다. 대신 응용 프로그램에 인증서 데이터 (즉, .cer 파일의 내용)를로드 한 다음 (번들 또는 네트워크에서 가져올 수 있음) SecCertificateCreateWithData를 사용하여 인증서 참조를 만듭니다. 여기에서 SecTrust 개체 (SecTrustCreateWithCertificates, SecTrustEvaluate - 결과 SecTrustResultType 및 SecTrustCopyPublicKey를 무시하도록 선택할 수 있음)를 사용하여 공개 키 참조를 추출 할 수 있습니다. 그리고 여기에서 SecKey API (SecKeyEncrypt, SecKeyRawVerify)를 사용하여 암호화하고 확인할 수 있습니다.

튜토리얼 how to create a self-signed certificate is here.

기본 단계는 다음과 같습니다

#Make the -----RSA PRIVATE KEY----- file in PEM format 
openssl genrsa -out privKey.pem 2048 

#Make the -----CERTIFICATE REQUEST----- 
openssl req -new -key privKey.pem -out certReq.pem 

#Make the actual -----CERTIFICATE----- 
openssl x509 -req -days 30 -in certReq.pem -signkey privKey.pem -out certificate.pem 

#Make the DER certificate.crt file from the certificate.pem 
openssl x509 -outform der -in certificate.pem -out certificate.cer 

맥 컴퓨터에 .CER, 그것은 열쇠 고리로 가져옵니다 제공 할 것입니다 당신이 더블 클릭.

자료 :

+0

당시 공개 키가 있었기 때문에 해결 방법이 유일한 옵션이었습니다. 인증서를로드하는 데 사용할 수있는 인증서가 없습니다. 우리는 결국 다른 목적으로 공개 키를 인증서에 넣었습니다. –

+0

API는 노출 된 메소드로 보안을 수행해야한다고 생각하는 방식을 시행하고 있습니다. – bobobobo

관련 문제