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>

*************************************************************************************************

 

 

참고 : https://dantes.kr/547

 

+ Recent posts