Application/Web

톰캣 SSL(HTTPS) 설정

realforce111 2016. 5. 26. 11:34

톰캣에 SSL 암호화 통신을 적용할 수 있습니다. SSL은 데이터를 전송할 때 암호화하고, 데이터를 수신해서 복호화 하는 구조를 갖습니다. 양방향 통신이기 때문에 웹 브라우저와 웹 서버 모두 데이터를 내보낼 때 암호화를 진행합니다.


SSL을 적용하기 위해서는 인증서가 필요합니다. keytool을 이용해서 인증서를 생성하겠습니다.


윈도우에서 keytool을 사용하기 위해 jdk를 설치합니다.


http://www.oracle.com/technetwork/java/javase/downloads/index.html


jdk 설치 완료 후 제어판 -> 시스템 -> 고급 시스템 설정 -> 고급 -> 환경 변수 설정으로 이동합니다.


Path에 jdk 설치폴더의 bin 경로를 추가합니다.


cmd 창에서 keytool을 이용하여 인증서 파일을 생성합니다.


keytool -genkey -alias KeystoreAlias -keysize 2048 -keyalg RSA -keystore tomcat_keystore.jks -dname "CN=me.co.kr, OU=team, O=company, L=seoul, ST=seoul, C=kr" -validity 3650

*keytool 옵션
keyalg : 키교환 알고리즘
keystore : 인증서 파일명
validity : 인증서 기간


WinSCP 등 프로그램을 이용하여 인증서 파일을 톰캣 서버에 업로드합니다.


[root@localhost ~]# cd /usr/local/src/tomcat9/conf/

[root@localhost conf]# vi server.xml 

    <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443

         This connector uses the NIO implementation. The default

         SSLImplementation will depend on the presence of the APR/native

         library and the useOpenSSL attribute of the

         AprLifecycleListener.

         Either JSSE or OpenSSL style configuration may be used regardless of

         the SSLImplementation selected. JSSE style configuration is used below.

    -->

    <!--

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

               maxThreads="150" SSLEnabled="true">

        <SSLHostConfig>

            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"

                         type="RSA" />

        </SSLHostConfig>

    </Connector>

    -->


    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               keystoreFile="/usr/local/src/tomcat_keystore.jks" keystorePass="password"

               clientAuth="false" sslProtocol="TLS" sslVerifyClient="optional"

                           sslEnabledProtocols="TLSv1.2,TLSv1.1,SSLv2Hello"/>

톰캣의 server.xml 파일을 열고 SSL 관련 설정을 추가합니다. 인증서 파일 경로와 인증서 패스워드를 설정합니다.


[root@localhost conf]# firewall-cmd --permanent --add-port=8443/tcp

success

[root@localhost conf]# firewall-cmd --reload

success

방화벽이 설정되어 있을 경우, 톰캣 SSL 접속 포트인 TCP/8443 포트를 허용합니다.


[root@localhost conf]# /usr/local/src/tomcat9/bin/shutdown.sh 

Using CATALINA_BASE:   /usr/local/src/tomcat9

Using CATALINA_HOME:   /usr/local/src/tomcat9

Using CATALINA_TMPDIR: /usr/local/src/tomcat9/temp

Using JRE_HOME:        /usr

Using CLASSPATH:       /usr/local/src/tomcat9/bin/bootstrap.jar:/usr/local/src/tomcat9/bin/tomcat-juli.jar

Using CATALINA_OPTS:   

[root@localhost conf]# /usr/local/src/tomcat9/bin/startup.sh 

Using CATALINA_BASE:   /usr/local/src/tomcat9

Using CATALINA_HOME:   /usr/local/src/tomcat9

Using CATALINA_TMPDIR: /usr/local/src/tomcat9/temp

Using JRE_HOME:        /usr

Using CLASSPATH:       /usr/local/src/tomcat9/bin/bootstrap.jar:/usr/local/src/tomcat9/bin/tomcat-juli.jar

Using CATALINA_OPTS:   

Tomcat started.

톰캣 서비스를 재시작합니다.


웹브라우저에서 https://<서버 IP>:8443을 입력하여 톰캣 SSL 접속을 확인합니다.