2011-03-06 5 views
1

Java keytool에 개인 키가있는 X.509 인증서를 내보낼 수 있습니까?Java keytool : X.509 인증서에 개인 키 삽입

사용자가 개인 키를 사용하여 인증서를 생성하고 서명 도구에 제공하는 시나리오를 고려 중입니다. 서명 도구는 인증서의 개인 키를 사용하여 대상 파일에 서명합니다. 결국 개인 키는 인증서에서 제거되고 인증서는 배포를 위해 대상 파일에 첨부됩니다.

+1

509 인증서 개인 키를 가지고 있지 않습니다. –

+0

그건 내 초기 이해도했다. 하지만 .NET에는 인증서 생성 도구 (http://msdn.microsoft.com/en-us/library/bfsktky3(v=vs.80).aspx)가 있으며 개인 키를 포함 할 수있는 옵션이 있습니다. X.509 인증서. – Ranjit

답변

2

아직 논평 할 수 없으므로이 양식을 사용하겠습니다. 일반적으로 개인 키가있는 인증서를 저장할 때 PKCS # 12 http://en.wikipedia.org/wiki/PKCS#12을 사용합니다. 또한 PCKS # 8 컨테이너에 공용/개인 키 쌍을 저장하고 인증서를 별도로 배송 할 수 있습니다.

관심이 있으시면 PKCS # 12 저장소에 대한 몇 가지 Java 코드 샘플이 있다고 생각합니다.

또한 오픈 소스 Java Certificate Authority EJBCA (http://www.ejbca.org/)는 예제의 훌륭한 소스입니다.

+0

내가 아직 코멘트를 할 수 없기 때문에, 나는 뭔가를 추가하고 싶다 : 당신이 참조한 인증서 생성 도구는 개인 키를 포함하는 x.509 인증서를 만들지 않는다. 그러나 인증서를 포함하고있는 독점적 인 보호되지 않은 * .snk 파일을 만든다. 개인 키. 그들도 cert & key를 저장할 컨테이너의 사용을 권장합니다. – BatteryBackupUnit

+0

알았어요. PKCS # 12를 읽어 보면 이것이 동일한 파일에 개인 키와 인증서 쌍을 저장할 수있는 키 저장소 파일 (예 : Java 키 저장소)에서 사용되는 형식이라는 것을 알게됩니다. 귀하의 회신에 감사드립니다. 이전 응답에서 언급 한 웹 사이트에서 이에 대한 자세한 내용을 읽어 보겠습니다. – Ranjit

1

생성 된 개인 키는 다른 목적으로 사용되거나 공유되지 않습니다. 내가 아는 서명 도구는 자신의 개인 키를 사용하여 공개 키를 인증하기 위해 서명을 생성합니다. 예 : keytool을 사용하여 키 쌍을 생성하고 CSR을 CA에 제출하십시오. CA는 자체 pvt 키를 사용하여 인증서에 서명합니다.

+0

그 이름이 PEM, 개인 및 공개 키를 모두 포함하는 파일 –

1

keytool (명령 줄 실행 파일)에는 개인 키를 내보낼 수있는 옵션이 없습니다. 그러나 JSA-API를 사용하여 프로그래밍 방식으로 수행 할 수도 있습니다 (시도하지는 않았지만).

1

키 및 서명 된 인증서는 종종 PKCS12 또는 Java의 JKS와 같은 키 저장소 컨테이너에 저장됩니다. 또한 Apache HTTPD와 같은 응용 프로그램에서 사용하기 위해 인증서와 키를 PEM 형식 파일로 추출 할 수도 있습니다.

는 OpenSSL을 사용하여 인증서 표시를 추출하기 전에 PKCS12 형식의 파일로 변환하는 것이 필요 JKS 파일에서 인증서 표시 및 키를 추출하려면

keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.pkcs12 -deststoretype pkcs12 
openssl pkcs12 -in keystore.pkcs12 -out mycert.crt -nokeys 
openssl pkcs12 -in keystore.pkcs12 -out mykey.key -nocerts 
관련 문제