알아두면 좋은 IT 지식/General

웹서버(WAS)에 TLS(SSL)인증서 적용

uutopia 2020. 12. 14. 13:57

인증서를 발급 받을 때 보통 웹서버 종류별로 설치 가이드문서를 제공하고 구글링을 통해서도 정보를 쉽게 얻을 수 있다. 하지만 TLS인증서에 대한 개념과 keystore에 대한 개념이 부족한 상태로 작업 시 이해가 어려울 수 있으므로 기본적인 배경지식이 필요하다.

 

SSL이란? TLS란? HTTPS란?

SSL이란 인터넷에서 정보를 암호화해서 송수신하는 프로토콜로 SSL 3.0을 참고하여 표준화 된 것이 TLS이다. (TLS 1.0 = SSL v3.1) 이 TLS를 HTTP에 적용한 것이 HTTPS이다.

 

TLS인증서 발급

인터넷에 TLS인증서나 keystore를 검색해보면 openssl이나 keytool을 통해서 개인키와 서버인증서를 직접 신청하고 생성하는 절차가 많이 나온다. 서버인증서의 발급은 보통 유료이므로 무료로 테스트용도로 이해를 돕기 위해서는 좋지만 실제로 서버에 적용하기 위해서는 공인인증기관을 통해서 발급받아야 한다.

정상적인 발급절차는 인증기관(CA)의 메뉴얼에 따라서 개인키를 생성하고 CSR(인증서 서명 요청)을 작성하여 인증기관에 인증서를 신청 및 결제를 통해서 발급받는 것이다. 또한 인증서를 적용할 도메인이 필수로 필요하다.

 

TLS인증서 종류

인증서는 크게 4종류로 구분할 수 있다.

1. 개인키(private.key)

2. 서버인증서(domain)

3. 루트인증서(root)

4. 체인인증서(chain)

 

keystore란?

keystore란 키저장소로 모든 인증서를 하나의 파일로 관리할 수 있다. 보통 .jks, .pfx, p12, .keystore 포맷을 사용한다. 인증서 신청 시 CSR자동생성을 통해서 개인키가 포함된 서버인증서와 루트인증서, 체인인증서 모두를 하나의 keystore파일로 변환하여 발급받을 수 있다.

 

keystore 생성

openssl을 사용해서 개인키와 인증서를 통해서 keystore를 생성할 수 있다. 

더보기

openssl -kcs12 -export -name sbms -in sbms.pem -inkey -private.key -out sbms.pfx

최초 pfx포맷으로 생성 후 필요 시 keystore -importkeystore 명령어를 통해서 .jks포맷 등으로 변경할 수 있다.

 

keystore 세팅

java계열의 WAS에 TLS인증서를 적용하기 위해서는 .jks포맷의 keystore파일이 요구된다. 발급받은 인증서가 .jks포맷이 맞는지 확인 후 jdk에 포함된 keytool을 사용해서 keystore정보를 확인하고 alias를 수정하거나 루트인증서, 체인인증서를 추가할 수 있다.

1. keytool

설치된 JAVA_HOME경로의 /bin/keytool.exe 프로그램을 cmd창(관리자권한)으로 실행해서 keystore를 세팅할 수 있다.

더보기

cd "c:\Program Files\Java\openjdk-1.7.0-u80-unofficial-windows-amd64-image\bin"

2. keystore -list

keytool.exe경로에서 keytool -list 명령어를 사용하여 발급받은 keystore파일(.jsk)의 정보를 확인할 수 있다.

더보기

keytool -list -keystore c:\keystore\smartbill.test.com.jks

3. keystore -importkeystore

필요시 발급받은 keystore 포맷을 변경할 수 있다.

더보기

keytool -importkeystore -srckeystore c:\keystore\smartbill.test.com.p12 -srcstoretype pkcs12 -destkeystore c:\keystore\smartbill.test.com.jks -deststoretype jks

4. keystore -changealias

필요 시 keystore에 포함된 인증서의 alias를 변경할 수 있다.

더보기

keytool -changealias -keystore c:\keystore\smartbill.test.com.jks -alias tomcat - destalias sbms

5. keytool -importcert

필요 시 keystore에 루트인증서와 체인인증서를 추가할 수 있다.

더보기

keytool -importcert -keystore c:\keystore\smartbill.test.com.jks -storepass abcd1234 -trustcacerts -alias root -file c:\keystore\GROBALSIGN_ROOT_CA.crt

6. keytool -delete

필요 시 keystore에 저장된 인증서를 삭제할 수 있다.

더보기

keytool delete -alias root -keystore c:\keystore\smartbill.test.com.jks

 

WAS에 TLS인증서 적용

WAS가 원하는 형식으로 keystore생성 후 특정 경로에 저장 후 설정파일을 수정하는 방식으로 WAS에 TLS를 적용할 수 있다. 적용 후 https호출을 통해서 정상적용 여부를 확인한다.