개발/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
- 개인키 발급
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 : 키 또는 표준 출력을 기록할 출력 파일 이름 지정
- 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
- req : PKCS#10 형식의 인증서 요청을 생성 및 처리
* 공개키 표준 형식https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%ED%91%9C%EC%A4%80 - new : 새 인증서 요청
- out : 새로 생성된 개인 키를 쓸 파일 이름
- 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 일련 번호 파일이 생성
- 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>

반응형