개발

CentOS 7.9 의 톰캣 8.5에 사설 SSL 인증서 설치하기

에드몽단테스 2020. 12. 21. 13:27

보통 톰캣에 SSL 인증서를 설치한다고 하면 앞 단에 apache를 두고 apache에 SSL 인증서를 설치했는데, 이번에는 톰캣에 직접 SSL 인증서를 붙여보기로 했다. 테스트용이기 때문에 인증서는 공인 인증서가 아닌 사설 인증서를 만들어 사용했다.

 

인증서 파일은 tomcat 안의 conf/ 안에 ssl 디렉토리를 만들어 이 곳에 둘 것이다.

아래 작업은 ssl/ 디렉토리 안에서 이루어진다.

 

1. 개인키 생성

  인증서를 얻기 위해서는 인증요청서(Certificate Signing Request)를 만들어야 하는데, 만들기 전에 그 키 값을 생성한다.

# openssl genrsa -des3 -out private.pem 2048

비밀번호를 물어본다. 비밀번호를 등록한다.

 

2. 인증요청서(CSR) 파일을 만든다.

# openssl req -new -key private.pem -out private.csr

개인키의 비밀번호와 인증서에 대한 설명 값을 넣는다. 테스트용이라 간단하게 적었다.

private.csr이 만들어졌으면, 이를 공인인증서 기관에 제출하면 인증서를 만들어 준다.

하지만 우리는 테스트용이기 때문에 이를 자체적으로 인증해 줄 rootCA를 만든다.

 

3. rootCA의 기본키 생성

# openssl genrsa -aes256 -out rootCA.pem 2048

위 기본키 생성할 때와 마찬가지로 비밀번호를 등록한다.

 

4. rootCA CSR 생성

# openssl req -x509 -new -nodes -key rootCA.pem -days 3650 -out rootCA.csr

rootCA 개인키 비밀번호를 입력하고, 마찬가지로 인증서에 대한 값들을 입력한다.

인증기간은 10년으로 했다.

이제 rootCA의 인증서요청 파일인 rootCA.csr이 만들어졌다.

이 사설 rootCA와 인증요청서(CSR)과 함께 인증서(CRT)를 만든다.

 

4. 인증서(CRT) 생성

# openssl x509 -req -in private.csr -CA rootCA.csr -CAkey rootCA.pem -CAcreateserial -out private.crt -days 3650

인증서 파일인 private.crt 가 생성되었다.

이 인증서 파일을 톰캣에 맞게 적용되도록 pkcs12 형식으로 변경한다.

 

5. pkcs12 형식 변경

# openssl pkcs12 -export -in private.crt -inkey private.pem -out keystore -name tomcat

pkcs12 타입인 keystore 파일이 생성되었다. 이를 다시 jks 형식으로 변환한다.

 

6. jks 형식 변경

# keytool -importkeystore -srckeystore keystore -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks

keystore.jks 파일이 만들어 졌다. 이를 tomcat8.5에 적용시킨다.

 

7. tomcat 파일 설정

  톰캣의 ssl설정은 모든 버전(7, 8, 8.5, 9)마다 다르다. ssl 설정 시에는 각 문서를 확인해야 한다.

여기에서는 8.5 기준으로 설정을 한다.

conf/server.xml 파일을 열어 org.apache.coyote.http11.Http11NioProtocol 부분을 찾아 주석을 해제하고 다음과 같이 넣어준다.

포트는 443으로 변경했고 방금 생성한  jks 파일의 경로와 비밀번호를 설정해준다.

이것으로 모든 설정은 끝났다. 톰캣을 재기동하고 확인해 보자.

 

8. 방화벽 설정

443포트가 방화벽에서 열려있지 않다면 다음과 같이 방화벽을 해제한다. (CentOS 7.9기준이다.)

 

방화벽에 포트 추가

# firewall-cmd --permanent --add-port=443/tcp

 

방화벽 적용

# firewall-cmd --reload

 

 

 

반응형