Tomcat SSL 인증서 연동(HTTPS)

김재민·2022년 3월 7일

TLS / SSL

  • TLS : Transport Layer Security

  • SSL : Secure Sockets Layer

    	웹 브라우저와 웹 서버간의 통신을 안전하게 보장하는 기술 
         
         데이터를 보낼 때 데이터를 암호화하고, 데이터를 받을 때 암호화된 데이터를 복호화하는 구조
         
         양방향 통신이기 때문에, 웹 브라우저와 웹 서버 모두 데이터를 내보낼 때 암호화를 진행
         

    TLS / SSL 인증

  • 웹 브라우저에서 암호화된 연결로 웹 서버와 통신하려고 하면, 웹 서버에서 브라우저에게 몇가지 증명서를 요구

  • 증명서는 클라이언트 인증(Client Authentication)이라고 하며, 개인 사용자간 보다는 B2B 형태에서 더 많이 사용됨

  • 대부분의 SSL - enabled 웹서버는 클라이언트 인증을 요구하지 않음

    Certicates 인증서

    SSL을 구현하려면 웹 서버에 Certificate가 있어야 하는데, 이 Certificate는 암호화된 연결을 수용하는 외부 인터페이스를 보장

    이러한 SSL 설계 방식은 "서버에서 어떤 형태로든 내가 생각했던 상대방이 맞다" 라는 것을 서버에서 증명하는 것

    따라서, Certificate를 해당 인터넷 주소에 대한 Digital Passport로 볼 수 있음
    
  • Certificate는 암호화되어 발급되는데, 최초 발급자말고는 사실 발급하기가 매우 힘들다.

  • 방문자 브라우저에서 해당 사이트를 접근하면 보통 경고가 뜨는데, 이때 Certificate Authorities라는
    신뢰되는 3rd 파티에 서명하면 경고가 뜨지 않음

  • Java에서는 상대적으로 단순한 keytool 커맨드라인 툴을 제공하고, 명령어는 self-signed Certificate를 생성할 수 있음

  • Self-signed Certificates는 사용자가 간단하게 생성한 인증서이기 때문에 테스트 시나리오에 적합하고, 실제 상용제품에는 적합하지 않음

Tomcat에서 인증서 설정하기

1) JDK 다운로드 + JAVA_HOME 설정

내pc - 속성 - 고급시스템 설정 - 환경변수 - 시스템 설정

JAVA_HOME : C:\Program Files\Java\jdk1.8.0_92

2) cmd 실행(관리자 권한으로 실행)

cd %JAVA_HOME%/bin

3) keystore 파일 생성

keytool -genkey -alias tomcat -keyalg RSA

입력하면 뜸
Enter keystore password:
Re-enter new password:

이후에 keystore정보관련 입력창들 뜸( ex. What is your first and last name?)

Enter key password for <tomcat>
(RETRUN if same as keystore password):
Re-enter new password:

4) server.xml 파일 수정

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="/Users/.keystore" keystorePass="password"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />

해당 구문 추가

그 다음 제일 오류가 났던 부분

5) 서버 재시작을 하면 tomcat이 실행되고 https://localhost:8443 으로 접근을 하면 인증서창이 나와야 하는데, 연결자체가 안되는 문제들이 계속 발생하였다.

Why? 문제 해결방법

  1. 우선 톰캣을 재설치 해보았다. 그런데도 에러가 계속 발생

인터넷에서는 저런식으로 설정을 변경하면 SSL이 떠야한다고 되었지만 나는 SSL이 계속 뜨지 않았다.

  1. 톰캣을 지우고 다시 재설치하면서 설정창에서 연결되어있는 Tomcat의 Path를 확인해보니 내가 연결하려던 Tomcat이 아닌 다른 Tomcat과 연결되어 있는걸 발견했다.. (가장 중요했지만, 너무 당연하게 생각하여 확인을 안해봄)
  2. 제대로된 Tomcat의 경로를 설정하여 다시 톰캣을 실행하고 https://localhost:8443 로 접속했을 때

다음과 같은 결과창을 보이면서 성공함!

profile
어제의 나보다 나은 오늘의 내가 되자!🧗‍♂️

0개의 댓글