[Linux] CentOS7 SSL인증서 등록 / https 보안 활성화 / pem to p12 / pem to crt / pem to key
프로젝트 진행 중 고객사로부터 전달받은 인증서 파일은
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