톰캣에 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 접속을 확인합니다.