개발/Server

[Linux] CentOS7 SSL인증서 등록 / https 보안 활성화 / pem to p12 / pem to crt / pem to key

Dane.Kim 2022. 10. 5.

프로젝트 진행 중 고객사로부터 전달받은 인증서 파일은

 

ChainCA.crt , RootCA.crt, CSR.pem, PrivateKey.pem, domain_co_kr.pem

 

이렇게 다섯 개 파일이었다.

 

이 파일들로 ssl인증서 등록하는 방법은

 

 1. domain_co_kr.pem 파일을 crt 파일로 바꿔준다. 

 

openssl x509 -outform der -in domain_co_kr.pem -out domain_co_kr.crt

 

 2. PrivateKey.pem 파일을 key 파일로 바꿔준다. 

 

openssl rsa -in PrivateKey.pem -out domain_co_kr.key

 

 3. crt 파일 세 개를 합치면서 확장자를 변경해준다. 

 

cat ChainCA.crt RootCA.crt domain_co_kr.crt > domain_co_kr.pem

 

 4. 변환한 domain_co_kr.pem과 domain_co_kr.key를 이용해 p12 파일을 만든다.

 

openssl pkcs12 -export -in domain_co_kr.pem -inkey domain_co_kr.key -out domain_co_kr.p12

 

이 때, 암호를 입력하는 과정을 거친다.

 

 5. keytool을 이용해 keystore 파일로 변환한다. 

 

keytool -importkeystore -srckeystore domain_co_kr.p12 -srcstoretype PKCS12 -destkeystore domain_co_kr.keystore -deststoretype JKS

 

이 때도 암호 설정 과정이 있다.

 

이 때, keytool: command not found 에러가 출력 될 수 있다. 그럴 때는 자바 환경변수 설정이 안된 것일 수 있으므로

java -version

이 정상적으로 출력 되는지 확인해본다.

만약 정상적으로 출력 되지 않을 때에는 

vi /etc/profile

명령어로 JAVA_HOME 이 잘 잡혀있는지 확인 후,

source /etc/profile

명령어로 설정을 적용해준 후 다시 해본다.

 

 6. domain_co_kr.keystore 가 정상적으로 생성되었는지 확인한다.

ll 이나 ls로 보이지 않을 때는 ls -al를 이용.

 

 

 7. 톰캣path/conf/server.xml 에 아래처럼 수정한다.

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                    maxThreads="200" SSLEnabled="true"
                    scheme="https" secure="true"
                    keystoreFile="/path/domain_co_kr.keystore"
                    keystorePass="비밀번호" 
                    clientAuth="false" sslProtocol="TLS" />

 

 

혹시 key 확장자가 pem 인데, p12 파일이 필요하다면, 아래 명령어로 동일하게 변경도 가능한 것 같다.

 

openssl pkcs12 -export -out domain_co_kr_cert.p12 -in domain_co_kr_cert.pem -inkey PrivateKey.pem

댓글