인증서 체인에서 개인 키를 어떻게 내보낼 수 있나요?

인증서 체인에서 개인 키를 어떻게 내보낼 수 있나요?

키 저장소를 만들고 해당 키 저장소에서 CSR 파일을 생성하고 CA로부터 서명된 인증서를 받으면 루트 및 중간 인증서를 키 저장소로 가져왔고 마지막으로 서명된 인증서를 가져왔습니다. 서명된 인증서를 추가한 후 "인증서 응답이 키 저장소에 설치되었습니다"라는 응답을 받았습니다. 이 형식에서는 Tomcat의 키 저장소를 사용할 수 있지만 다른 애플리케이션 컨테이너의 경우 pem 인코딩 파일이 포함된 개인 키만 필요합니다. 그리고

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs -srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in server.pkcs -out server.pem

작동하지 않는 것 같습니다. 개인 키가 아닌 인증서 정보만 포함된 pem 파일을 받고 있습니다.

그렇다면 인증서 체인을 구축한 후 개인 키를 내보낼 수 있습니까? 그렇다면 어떻게?

답변1

사용한 openssl pkcs12 명령은 개인 키도 내보내야 합니다.

openssl pkcs12 -in server.pkcs -out server.pem

p12 입력 파일에 개인 키가 포함되어 있지 않은 것 같습니다.

p12 파일에서 키를 내보낼 때 어떤 종류의 경고가 없는 것이 확실합니까?

한가지 중요한 점은 JKS가 키 비밀번호와 매장 비밀번호를 별도로 지원하는 것 같습니다. JKS에서 p12를 내보낼 때 p12의 비밀번호가 키의 비밀번호와 다를 수 있습니다. 이는 openssl에서 지원되지 않는 것으로 보이며(방금 시도한 경우) "잘못된 암호 해독" 오류가 발생합니다. 키 비밀번호가 p12 비밀번호와 동일한지 확인해야 합니다.

답변2

다음 쿼리를 사용한 인증서 체인의 개인 키 내보내기,

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs 
-srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem

따라서 유일한 차이점은 -nodes -nocerts매개변수를 추가하는 것뿐입니다. 이는 매력적으로 작동하며 자체 서명된 인증서에도 작동합니다.

관련 정보