본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)

테스트용 SSL 톰캣 적용기 (SSL Tomcat, OpenSSL)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 10. 14.

 

 

테스트용 SSL 인증서를 회사에 요청했는데...알아서 하세요(?)라는 대답이 돌아왔다.

이를 극복하기 위해 구글링하며 정리한 내용을 기록하여 보았다.

 

적용시킬 대상은 Tomcat 8.0 서버이다.

 

먼저 ssl을 만들기 위한 프로그램을 다운 받는다.

OpenSSL이라는 훌륭한 프로그램을 사용하여 진행 할 예정이다.

https://code.google.com/archive/p/openssl-for-windows/downloads

 

그럼 아래 단계에 맞추어서 천천히 진행하여 보자.

다운로드 받은 OpenSSL 압축을 풀어준다.

압축을 푼 이후에 bin 디렉토리로 이동하여 openssl.exe를 실행한다.

 

1. 개인키 , 공개키 만들기를 진행한다.

 1) 개인키를 만든다.

  * genrsa -des3 -out 키이름 2048

PrivateKey를 생성한다. 비밀번호 입력에 유의하자(까먹지 말자!)

위 명령이 작동하면 OepnSSL 기본 디렉토리에 아래 사진처럼 파일이 만들어진다.

요런식으로 파일이 계속 생길 예정이다.

 

 

 2) https의 ssl 인증서에는 서비스등록할때마다, 비밀번호를 입력해줘야하기 때문에, 비밀번호가 없는 키를 새로 만들어 준다.

  * genrsa  -out 키이름 2048

비밀번호가 없는 키 만들기

 

 3) 개인키를 토대로 공개키를 만들어 준다.

  * rsa -in 앞서만든 개인키 -pubout -out public.key

이름은 알아보기 쉽게 하였다.

 

2. CSR(인증요청서) 만들기를 진행 한다.

  * req -new -key private.key -out private.csr

엥...오류가 나네??;;

만약 위 사진처럼 오류가 난 다면 해당 설정파일을 읽어오지 못한 문제이므로 아래 처럼 하도록 한다.

 1) OpenSSL 콘솔에서 나온다 (컨트롤키 + Z)

 2) 아래 명령어를 입력한다. 자세히보면 -config라는 옵션으로 openssl.cnf 파일 위치를 지정 한 것을 볼 수 있다.

 3) 명령어 : openssl.exe req -config D:\openssl\openssl.cnf -new -key private.key -out private.csr

외부로 빠져나와서 실행시키도록 한다! 아래 내용은 테스트내용을 입력한 것 이다.

 

3. CRT(인증서) 만들기를 진행 한다.

 1) rootCA.key 생성한다.

  * genrsa -aes256 -out rootCA.key 2048

 

 2) rootCA 사설 CSR 생성한다.

  * req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem

역시나 내용은 막 적었다...테스트용이니깐..

 

 3) CRT를 생성한다.

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

 

 4) TOMCAT에 인증서를 적용할것이기 때문에 pkcs12라는 형식으로 바꿔준다.

  * pkcs12 -export -in private.crt -inkey private.key -out .keystore -name tomcat

 

 

위 단계까지 한다면 작업은 완료 된 것이라 볼 수 있다.

톰캣에서 server.xml 파일을 아래처럼 편집한다.

https와 관련된 내용을 적어주자. 어려운 내용은 아니다.

  <Service name="sslTest">
	<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
			   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
			   keystoreFile="/키스토어가있는 디렉토리/.keystore" keystorePass="123456"
			   clientAuth="false" sslProtocol="TLS" />
    <Connector port="10102" protocol="AJP/1.3" redirectPort="12333" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
         <Context path="" docBase="배포디렉토리" reloadable="false" useHttpOnly="true"></Context>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>

 

https로 접속하니 잘 나온다.

 

단계를 표로 정리하여 보았다.

순서 내용
1 OpenSSL을 다운 받는다.
openssl.exe를 실행 한다. (OpenSSL 압축이 풀린 bin 디렉토리까지 이동 해야 한다.)
2 개인키를 만든다.
  * genrsa -des3 -out 키이름 2048
3 비밀번호가 없는 키를 새로 만들어 준다.
  * genrsa  -out 키이름 2048
4 개인키를 토대로 공개키를 만들어 준다.
  * rsa -in 앞서만든 개인키 -pubout -out 공개키이름.key
5 CSR(인증요청서) 만들기를 진행 한다.

  * req -new -key private.key -out private.csr
  * 편의상 private.key는 개인키, public.key는 공개키로 한다.
6 위 CSR 만드는 경우 오류가나면 OpenSSL콘솔을 나온다.
아래 명령어를 입력한다.
 * openssl.exe req -config openssl디렉토리\openssl.cnf -new -key private.key -out private.csr
7 openssl.exe를 실행 한 이후 rootCA.key를 생성한다
  * genrsa -aes256 -out rootCA.key 2048
8 rootCA 사설 CSR 생성한다.
  * req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pe
9 CRT를 생성한다. (365일짜리..)
   * x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 365
10 TOMCAT에 인증서를 적용할것이기 때문에 pkcs12라는 형식으로 바꿔준다.
  * pkcs12 -export -in private.crt -inkey private.key -out .keystore -name tomcat
11 톰캣 server.xml을 수정한다.

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글