keystore에서 개인키 추출하기

앞에서 Tomcat용 SSL 인증서를 ComodoSSL이라는 곳에서 발급받아 keystore 에 저장하는 것까지 해 보았다. 이번에는 keysotore에서 다시 SSL 인증서와 개인키(Private key)를 추출하는 방법에 대해 알아보자. SSL인증서와 개인키(Private key)를 다시 추출하면 Apache에 적용할 수 있다. 즉, 한번 발급받은 인증서로 다른 웹서버에 적용할 수 있다는 말씀… 단, 이번에 받은 SSL 인증서는  www.enter.co.kr 용 SSL 인증서이므로 www.enter.co.kr  사이트를 운영하는 Apache에만 적용할 수 있다…

만약 *.enter.co.kr 인증서가 있다면(이를 멀티도메인 인증서라고 한다.) xxx.enter.co.kr 주소를 갖는 모든 웹서버에 적용 가능하다.(뭐 shop.enter.co.kr, job.enter.co.kr, food.enter.co.kr 이런 식으로 다 적용할 수 있다는 뜻…)

 

설명이 길었다. 그럼 진행해 볼까나…

아.. 또 설명을 좀 해야되는군.. keystore 파일에 저장된 인증서를 다른 인증서로 변환할 때 가장 편리한 방법은 pfx 확장자를 갖는 인증서로 변환하는 것이다. pfx 확장자를 갖는 인증서파일은 많은 웹서버에서 지원하기 때문에 호환성이 매우 높다. 우리는 pfx로 가기 이전 단계인 PKCS12 형식의 인증서로 먼저 추출한 후 pfx 인증서로 최종 변환하도록 하겠다..

 

이제 진짜 시작한다..

 

먼저 keystore 파일은 pkcs12 형식의 파일로 변환한다.

 

keytool -importkeystore -srcstoretype JKS -srckeystore [keystore파일명] -deststoretype PKCS12 -destkeystore [생성할파일명]

 

위와 같은 형식으로 입력한다. 앞에서 keytool -list  명령으로 확인했을때 중요하다고 한 부분 생각나시는가? 빨간 표시까지 해뒀었다.. 그렇다.. JKS다 keystore 파일은 기본적으로 JKS 형식을 가지는 것이다.

잘 기억이 안나면 최초 인증서 신청 부분으로 가보도록 (복습도 중요하니까..)

 

실제 명령어는

keytool -importkeystore -srcstoretype JKS -srckeystore enter.key -deststoretype PKCS12 -destkeystore enter.pk12.key

 

처럼 입력한다.

JKS 형식의 enter.key를 이용해서 PKCS12 형식의 enter.pk12.key를 생성하라는 거다.

먼저 암호를 묻는다. 입력한다. 다음으로 신규 파일(PKCS12 형식으로 내보내는 인증서)의 암호를 요구한다. 같은 암호를 입력해도 되고, 다른 걸로 해도 된다. 다시 확인해 준다. 이렇게 3번 암호를 입력해야 한다.

(만약 외부 업체에 SSL인증서를 변환해서 등록요청한다고 가정한다면 본인이 만든 암호와는 다른 암호를 넣는 것이 보안상 좋다고 생각한다. 뭐 개인적인 의견이지만…)

 

다음으로 다른 인증서가 들어있는데 그것도 넣을건지 물어본다. 앞에서 우리는 SSL 인증서 외에 Root, Chain 인증서 2개를 더 넣었다. 그러니 변환할 때 그것도 포함할 지 물어본는 것이다. 여기서는 둘다 no를 한다. 왜냐하면 Root, Chain, SSL, 개인키 이렇게 4개의 인증서를 모두 포함하는 pfx 파일을 만들고자 하니까… (Verisign이나 ComodoSSL 과 같이 세계적인 회사의 경우는 앞에서도 예기 했지만 Root 인증서를 대부분의 OS가 갖고 있어서 넣지 않아도 괜찮지만 그렇지 않은 경우는 넣는 것도 좋을 듯 하다.)

 

여기까지 왔다면 이제 Root, Chain, SSL인증서와 개인키를 포함하는 PKCS12형식의 인증서 파일(enter.pk12.key)이 만들어 지게 된다. 그런데 현제 enter.pk12.key 파일은 사용자가 확인할 수 없다. 그래서 확인 가능한 형식으로 한번 더 변환한다.

이제부터는 openssl을 이용한다. 혹시 명령을 실행해도 없다면 설치해 주도록 한다. 설치방법은 역시 구글링하면 쉽게 가능하다.

 

openssl pkcs12 -in [pkcs12형식으로 생성한 파일명] -nodes -out [새로 생성할 파일명]

 

위와 같은 형식으로 쓴다.

역시 실제로 입력하면

 

openssl pkcs12 -in enter.pk12.key -nodes -out enter.pem

 

생성할 때 입력한 암호를 넣으면 변환이 완료된다.

변환이 완료된 enter.pem 파일은 Windows로 내려받아 메모장 같은 걸로 열어보면

—–BEGIN PRIVATE KEY—– 로 시작하는 부분이 있고, —–BEGIN CERTIFICATE—– 로 시작하는 부분이 3곳이 있다. 즉, 4개의 인증서가 모두 들어있다는 뜻…

 

자.. 이제 여기서 인증서와 개인키를 분리하도록 한다.

 

oepnssl pkcs12 -in [pkcs로 변환한 파일명] -nokeys -out [분리될 인증서 파일명]

 

실제 명령은

 

openssl pkcs12 -in enter.pk12.key -nokeys -out  enter.ssl.crt

 

암호를 입력하면 인증서만 따로 분리된다.

다음으로 개인키를 분리한다.

 

openssl pkcs12 -in [pkcs로 변환한  파일명] -nocerts -out [개인키명]

 

실제 명령은

 

openssl pkcs12 -in enter.pk12.key -nocerts -out private.key

 

암호를 입력하면 개인키 암호를 물어본다. 개인키 암호를 입력, 암호확인(한번 더 입력) 하면 개인키만 따로 분리된다.

 

자.. 이제 Root, Chain, SSL, Private key까지 모두 가지게 되었다.

Apache에 적용하고 싶은 경우 역시 구글링해서 찾아보기 바란다

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Videos, Slideshows and Podcasts by Cincopa Wordpress Plugin