원문출처 : https://www.sslcert.co.kr/guides/SSL-Certificate-Convert-Format

 

OpenSSL 이용한 .pfx 생성 / pem 추출 / PrivateKey 암호화 적용,해제

# .pfx 에서 .crt 추출하기 (.pfx 암호 필요)
  openssl pkcs12 -in sslcert.co.kr.pfx -clcerts -nokeys -out sslcert.co.kr.crt.pem

# .pfx 에서 .key 추출하기 (.pfx 암호 필요)
  openssl pkcs12 -in sslcert.co.kr.pfx -nocerts -nodes -out sslcert.co.kr.key.pem

# .crt 및 .key 를 조합하여 .pfx 만들기
  openssl pkcs12 -export -in sslcert.co.kr.crt -inkey private.key -out sslcert.co.kr.pfx

# .pfx 에 포함된 인증서 확인 (.pfx 암호 필요)
  openssl pkcs12 -info -in sslcert.co.kr.pfx

# 개인키 파일에 암호화 적용 (패스워드 적용)
  openssl.exe rsa -des3 -in sslcert.co.kr.key.pem -out _ENCRYPTED_.key.pem

    writing RSA key
    Enter PEM pass phrase: (개인키 PEM 암호화 적용 패스워드 입력)
    Verifying - Enter PEM pass phrase:

# 암호화 해제된 개인키 파일 생성
  openssl.exe rsa -in _ENCRYPTED_.key.pem -out sslcert.co.kr.key.pem
    Enter pass phrase for _ENCRYPTED_.key.pem: (개인키 PEM 패스워드 입력)
    writing RSA key

 

PEM/PFX  JavakeyStore(.jks) 변환

# PEM 을 PKCS#12 으로 변환
  cat domain.crt chain1.crt chain2.crt root.crt > cert.pem - 1개 cert.pem 파일로 통합
  openssl pkcs12 -export -name example.com -in cert.pem -inkey private.key -out sslcert.co.kr.pfx - .pfx 파일로 저장
  
  
# .pfx 에서 .jks 변환
  keytool -importkeystore -srckeystore sslcert.co.kr.pfx -srcstoretype pkcs12 -destkeystore sslcert.co.kr.jks -deststoretype jks
  * pfx 에 개인키, 서버인증서, 체인인증서, 루트인증서 가 포함되어 있는 경우, KeyStore 에 모두 Import 됨


    대상 키 저장소 비밀번호 입력: ******
    새 비밀번호 다시 입력: ******
    소스 키 저장소 비밀번호 입력: ****** (pfx암호)
    www.securesign.kr 별칭에 대한 항목이 성공적으로 임포트되었습니다.
    임포트 명령 완료: 성공적으로 임포트된 항목은 1개, 실패하거나 취소된 항목은 0개입니다.

 

JavakeyStore(.jks)  PFX 변환

# JavakeyStore 를 PKCS#12 으로 변환
  keytool -importkeystore -srckeystore sslcert.co.kr.jks -srcstoretype JKS -srcstorepass "password" -destkeystore sslcert.co.kr.pfx -deststoretype PKCS12 -deststorepass "password"
    * .jks 파일을 .pfx 파일로 변환 저장 (원본 jks 파일 패스워드 필요, 대상 pfx 패스워드 지정)

 

JavakeyStore(.jks) 의 비밀번호, Alias 변경

# KeyStore 비밀번호 변경
  keytool.exe -storepasswd -new 변경될 비밀번호 -keystore sslcert.co.kr.jks
    키 저장소 비밀번호 입력: (기존 KeyStore 비밀번호)

# Key 비밀번호 변경
  keytool.exe -keypasswd -alias www.sslcert.co.kr -keystore sslcert.co.kr.jks
    키 저장소 비밀번호 입력: (KeyStore 비밀번호)
    <www.sslcert.co.kr>에 대한 키 비밀번호를 입력하십시오. (CSR 자동생성의 경우 Key 비밀번호는 KeyStore 비밀번호와 같음)
    새 <www.sslcert.co.kr>에 대한 키 비밀번호:
    새 <www.sslcert.co.kr>에 대한 키 비밀번호 다시 입력:

# Alias 별칭이름 변경
  keytool.exe -changealias -keystore sslcert.co.kr.jks -alias www.sslcert.co.kr -destalias 변경될 Alias 이름
    키 저장소 비밀번호 입력:

 

JavakeyStore(.jks) 인증서 확인/추가/삭제

# JavakeyStore(.jks) 에 포함된 인증서 확인
  keytool -list -v -keystore sslcert.co.kr.jks
    개인키, 서버인증서, 체인인증서, 루트인증서 등 포함된 인증서 목록이 출력 됨


    키 저장소 비밀번호 입력: *****
    키 저장소 유형: JKS
    키 저장소 제공자: SUN
    ..
    키 저장소에 1개의 항목이 포함되어 있습니다.
    ..
    별칭 이름(Alias): www.sslcert.co.kr
    생성 날짜: 2015. 5. 26
    항목 유형: PrivateKeyEntry
    ....
    서버인증서
    체인인증서
    루트인증서

# JavakeyStore 에 인증서 추가
# 추가 하기전에, keytool -list -v -keystore cert.jks 내역 확인 필수
  keytool -import -trustcacerts -alias 설정할Alias -file cert.pem -keystore sslcert.co.kr.jks
  

# JavakeyStore 에서 특정 인증서 삭제
# 삭제 하기전에, keytool -list -v -keystore cert.jks 내역 확인 필수
  keytool -delete -alias 삭제대상Alias -keystore sslcert.co.kr.jks -storepass 키스토어암호

 

OpenSSL 을 이용한 인증서 포맷 변경

# PEM  DER (바이너리)
  인증서 : openssl x509 -outform DER -in 원본인증서.pem -out 저장인증서.der
  개인키 : openssl rsa -in 원본개인키.pem -pubout -outform DER -out 저장개인키.der
  
# DER/CER (바이너리)  PEM
  openssl x509 -inform der -in 원본인증서.der -out 저장인증서.pem
  openssl x509 -in 원본인증서.cer -outform PEM -out 저장인증서.pem
  
# PEM  p7b(pkcs#7)
  openssl crl2pkcs7 -nocrl -certfile 원본인증서.pem -out 저장인증서.p7b -certfile 루트체인.cer
  
# CER/PrivateKey  pfx(pkcs#12)
  openssl pkcs12 -export -in 서버인증서.cer -inkey 개인키.key -out 저장인증서.pfx -certfile 루트체인.cer
  
# PEM  IBM Keyring (.Kyr) 변환
  IBM Domino Kyrtool 을 이용해서 Keyring 포맷으로 변환 예제 
  SSL 인증서 발급 완료시 Keyring 포맷은 제공되지 않으므로, 직접 변환해서 적용해야 합니다.