Cute Happy Ghost
본문 바로가기
server·network

linux서버 tomcat에서 SSL인증서 적용하기 PKCS12 keystore생성 및 JKS 포맷

by JENN_tech7 2023. 12. 14.
728x90
SMALL

1. 인증서 확인

해당 인증서는 한국전자인증(주)에서 받은 인증서임.

cert.pem : 서버의 SSL/TLS인증서

DigCertCA.pem : 중간인증기관(CA)의 인증서

newkey.pem : 서버의 개인키

 

tomcat(WAS) 단독으로 운영이니 tomcat기준으로 설명하겠다
Apach + Tomcat 연동의 경우 ssl 인증서는 Apache쪽에 설치해주면 된다.

 

해당 인증서는 pem파일인데 pfx파일과의 차이점은 아래글 참고

https://wogus789789.tistory.com/439

 

SSL인증서 PEM과 PFX파일의 특징과 차이점

ssl인증서를 적용하기 위해 인증서를 받아보니 PEM과 PFX파일이 각각 있었다. PEM과 PFX 파일 포맷은 SSL/TLS 인증서와 관련 키를 저장하는 데 사용되는 두 가지 다른 파일 포맷인데, 이번에 차이점을

wogus789789.tistory.com

 

 

 

2. 인증서 저장

해당 인증서를 해당 서버의 임의의 폴더에 저장한다

/root/ssl/ 이라는 경로에 나는 저장을 해주겠다

 

 

 

 

 

3. PKCS12 keystore생성 및 JKS 포맷

  • openssl을 사용하여 PKCS12 keystore생성
openssl pkcs12 -export -in cert.pem -inkey newkey.pem -certfile DigiCertCA.pem -out keystore.p12 -name tomcat

openssl pkcs12 -export: PKCS12 포맷의 keystore 파일을 생성하는 명령
-in cert.pem: 사용할 서버의 인증서 파일
-inkey newkey.pem: 서버의 개인 키 파일
-certfile DigiCertCA.pem: 인증서 체인에 포함될 추가 CA 인증서 파일
-out keystore.p12: 생성될 PKCS12 keystore 파일의 이름
-name tomcat: keystore 내의 인증서/키 항목에 할당될 이름

 

  • 비밀번호 입력

keystore을 생성할 때 아마 비밀번호를 입력하라고 뜰것이다

보안에 취약하지 않은 비밀번호로 생성하여 입력해주고 꼭 기억해주자

예시로 'test123!@#'이라고 했다고 칭해보겠다

 

 

  • Keytool을 사용하여 PKCS12 ekystore를 JKS포맷으로 변환
keytool -importkeystore -deststorepass [password] -destkeypass [keypassword] -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass [p12-password] -alias tomcat

 

keytool -importkeystore: keystore의 내용을 다른 keystore로 가져오거나 변환하는 명령
-deststorepass [password]: 새로 생성될 JKS keystore의 비밀번호
-destkeypass [keypassword]: JKS keystore 내에 저장될 키의 비밀번호
-destkeystore mykeystore.jks: 생성될 JKS keystore 파일의 이름
-srckeystore keystore.p12: 변환할 원본 PKCS12 keystore 파일
-srcstoretype PKCS12: 원본 keystore의 타입
-srcstorepass [p12-password]: 원본 PKCS12 keystore 파일의 비밀번호
-alias tomcat: keystore 내의 인증서/키 항목에 할당된 이름

 

=> 비밀번호가 3개나 있어서 당황할 수 있지만 기록해두면 된다

혹은 보안에 취약하지 않은 비밀번호라면 같은 비밀번호로 해도 상관없다

  • 예시
keytool -importkeystore -deststorepass  test123!@# -destkeypass  test123!@# -destkeystore mykeystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass test123!@# -alias tomcat

보안이 강하다 치고 위에서 정한 test123!@#을 비밀번호 칸에 넣어주었다

예시이니 이 부분을 꼭 변경해서 변환하세요

 

 

 

 

 

 

4. tomcat 설정

  • server.xml설정
    ../tomcat/conf/server.xml
 <Connector port="80" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="443" />

톰캣경로의 server.xml에서 80포트를 443포트로 리다이렉션 시켜준다

https의 기본포트가 443이기 때문에 80포트(http)로 들어왔을 때 443(https)로 연결시켜주기 위함임

<Connector port="443"
           protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" debug="0" scheme="https" secure="true"
           keystorePass="test123!@#" keystoreFile="/root/ssl/mykeystore.jks"
           clientAuth="false" sslProtocol="TLS" />

그리고 443이라는 connector가 주석처리 되어있을 텐데 주석을 풀고 해당 내요을 작성해준다

keysotrePass : 키스토어 생성시 만든 비밀번호를 넣어주면됨. 예시에서 썼던 test123!@#을 써주면 되겠죠!

                         꼭 본인이 생성한 비밀번호로 넣으세요!

keystoreFile : 키스토어가 있는 경로. jks라는 확장자까지 꼭 적어주세요

나머지는 똑같이 작성해주면됨

 

 

5. 방화벽해제

사내 방화벽이나 서버의 방화벽이 있다면 443방화벽을 해제해줘야한다

 

 

6. 톰캣 재실행

../tomcat/bin/shutdown.sh
../tomcat/bin/startup.sh

설정을 재적용해주기 위해 톰캣을 껐다 켜준다

 

 

 

 

해당도메인으로 다시 들어가보면 자물쇠가 채워져있고 클릭하면 연결이 안전하다고 떠있다

그리고 https로 리다이렉트되는 것을 확인할 수 있다

그럼 끝!

 

 

 

 

 

728x90
LIST

댓글