개발/Tomcat

Tomcat 9.0 SSL 인증서 적용

멍냐옹2 2023. 2. 22. 11:35
반응형

SSL 인증서 발급 프로그램 다운
전문 사이트에서 정식으로 인증서를 발급 받을 수도 있지만, 테스트 용으로 생성하기 위해 하단 프로그램을 설치함.

https://sourceforge.net/projects/openssl/files/latest/download?source=typ_redirect%EF%BB%BFVisit

  1. 개인키 발급
genrsa -des3 -out [키이름] 2048 
ex) genrsa -des3 -out private.pem 2048
  • genrsa : RSA 개인 키 생성
    *RSA : 공개 키 암호 알고리즘, 해독이 어려워 전자서명에 사용
  • des3 : 암호화 방식
  • out [키이름] : 키 출력
    *pem : 키와 인증서를 파일 하나로 만듦
  • 2048 : 생성할 개인 키의 크기(비트)

1-2. 공개키 발급

genrsa -out [키이름] 2048 
ex) genrsa -out private.key 2048

암호화 하는 -des3 명령어가 없으므로 공개키로 생성

 

1-3. 개인키와 공개키 파일 생성

rsa -in [개인키] -pubout -out [공개키] 
ex) rsa -in private.key -pubout -out public.key
  • rsa : rsa 키 처리
  • in : 키 또는 표준 입력을 읽을 입력 파일 이름 지정
  • pubout : 공개 키 출력
  • out : 키 또는 표준 출력을 기록할 출력 파일 이름 지정
  1. CSR(인증요청서) 생성
req -new -key [키] -out [CSR이름.csr]
ex) req -new -key private.key -out private.csr

openssl.cnf 파일을 읽지 못하는 경우가 있음. 그럴때 사용
ex) req -new -config ./openssl.cnf -key private.key -out private.csr
  1. CRT(인증서) 생성

1) rootCA 생성

genrsa [암호화 알고리즘] -out [키이름] 2048
ex) genrsa -aes256 -out rootCA.key 2048
  • aes256 : 암호화 방식

2) rootCA 사설 CSR 생성

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

openssl.cnf 파일을 읽지 못하는 경우가 있음. 그럴때 사용
req -x509 -new -config ./openssl.cnf -nodes -key rootCA.key -days 3650 -out rootCA.pem
  • x509 : 일반적으로 테스트 인증서 또는 자체 서명된 루트 CA를 생성하는 데 사용
  • nodes : 개인 키가 생성되더라도 암호화되지 않음
  • days : 인증서를 인증할 일 수 기본 : 30일

3) CRT 생성

x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 3650
  • CAkey : 인증서에 서명할 CA 개인 키 설정
  • CAcreateserial : 존재하지 않는 경우 CA 일련 번호 파일이 생성
  1. Tomcat에 적용
    1) .keystore 생성
pkcs12 -export -in private.crt -inkey private.key -out .keystore -name tomcat
  • pkcs12 : PKCS#12 파일(PFX 파일이라고도 함)을 만들고 구문 분석
  • export : PKCS#12 파일이 구문 분석되지 않고 생성되도록 지정
  • inkey : 개인 키를 읽을 파일
  • name : 일반적으로 파일을 가져오는 소프트웨어
    2) server.xml 수정
    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
    		<SSLHostConfig>
	     	   <Certificate certificateKeystoreFile="C:/OpenSSL/bin/.keystore" certificateKeystorePassword="password" type="RSA" />
		</SSLHostConfig>
    </Connector>

반응형