tomcat/conf 하위에 ssl 디렉토리 생성
이후 ssl/ 디렉토리 내부에서 작업
cd /tomcat9/conf
mkdir ssl
cd ssl
# openssl 업데이트
sudo apt-get update -y
sudo apt-get install -y openssl
openssl version
1. 개인키 생성
# openssl genrsa -des3 -out private.pem 2048
(공개키 추출 : openssl rsa -pubout -in private.pem -out public.pem)
2. 인증요청서(CSR:Certificate Signing Request) 파일을 만든다.
# openssl req -new -key private.pem -out private.csr
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
5. 인증서(CRT : CERT 의 약자) 생성
# openssl x509 -req -in private.csr -CA rootCA.csr -CAkey rootCA.pem -CAcreateserial -out private.crt -days 3650
(공개키 추출 : openssl x509 -pubkey -in private.crt > public_crt.pem )
6. pkcs12 형식 변경
# openssl pkcs12 -export -in private.crt -inkey private.pem -out keystore -name tomcat
(비밀번호를 입력하라고 나오는데 이 비밀번호를 톰켓 설정파일에 등록)
7. jks(Java Key Store) 형식 변경
# keytool -importkeystore -srckeystore keystore -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
8. tomcat 파일 설정
conf/server.xml 파일을 열어 org.apache.coyote.http11.Http11NioProtocol 부분을 찾아 주석을 해제후
-----------------<추가>-------------------------
certificateKeystoreFile="conf/ssl/keystore.jks"
certificateKeystorePassword="password"
--------------------------------------------------
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /> -> redirectPort 8443 포트 맞출것
*************************************************************************************************
*** SSL 인증 사이트에서 인증서(certificate.crt)와 개인키(private.key) 파일을 받았을 경우
*************************************************************************************************
# openssl pkcs12 -export -in certificate.crt -inkey private.key -out keystore -name tomcat
(이때 생성된 파일과 비밀번호를 server.xml에 등록)
certificateKeystoreFile="conf/ssl/keystore"
certificateKeystorePassword="password"
# keytool -list -v -keystore keystore -storetype pkcs12
*************************************************************************************************
9. 443(8443)포트 방화벽 해제
sudo ufw allow 443 (sudo ufw allow 443/tcp)
sudo ufw allow 8443 (sudo ufw allow 8443/tcp)
sudo ufw enable (활성화)
sudo ufw disable (비활성화)
10. https://localhost:8443 으로 접속
[Alias name 확인]
# keytool -list -v -keystore keystore.jks
Alias name: tomcat
[포트 라우팅]
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
80 -> 8080, 443 -> 8443 으로 리다이렉트
*************************************************************************************
**** conf/web.xml 파일에 아래 내용 추가 ***************************************
<web-app>
...
<!-- http접속시 https로 리다이렉트-->
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL Forward</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- 이미지나 css파일은 제외-->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPS or HTTP</web-resource-name>
<url-pattern>/images/*</url-pattern>
<url-pattern>/css/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
...
</web-app>
*************************************************************************************************
'Infra Structure > WAS' 카테고리의 다른 글
[web]Java Thread Dump Analyzer (0) | 2021.08.23 |
---|---|
[Tomcat] 서버 정보 노출 방지 (0) | 2021.08.20 |
[Tomcat] OutOfMemory 강제 발생 (0) | 2021.08.18 |
[Tomcat] 톰캣 실행여부 확인 및 시작 Shell Script (0) | 2021.08.17 |
[Tomcat]OutOfMemory시 자동 힙덤프, 톰캣 자동 재시작 (1) | 2021.08.17 |