Apache + Tomcat 연동 및 SSL 적용
첫번째로 apache 와 tomcat 을 연동하기 위해선 jk_mod 라는 아파치 플러그인을 설치해야 한다.
sudo apt install libapache2-mod-jk
그 다음 jk_mod 가 설치된 디렉토리로 이동하여 파일 하나를 수정한다.
cd /etc/libapache2-mod-jk
vim worker.properties
# worker.properties
worker.list="{사용자 정의 모듈 이름}" ex) ajp13_worker
worker."{사용자 정의 모듈 이름}".port="포트 번호 (Port Number)"
worker."{사용자 정의 모듈 이름}".host="아이피 주소 (IP Address)"
worker."{사용자 정의 모듈 이름}".type="ajp13"
worker."{사용자 정의 모듈 이름}".type
worker."{사용자 정의 모듈 이름}".lbfactor=1
다 작성했으면 아파치가 설치된 폴더로 이동하자
# ubuntu
cd /etc/apache2
첫번째로 위에서 작성한 worker.properties 파일의 경로를 확인한다.
vim mod-availables/jk.conf
# jk.conf
JkWorkerFile /etc/libapache2-mod-jk/workers.properties
위에서는 기본적으로 jk_mod 에서 설치된 프로퍼티 파일경로 되어있지만 다른 경로에 추가하였을 경우 해당 경로로 변경해야 한다.
다음으로 sites-available 에 가상 호스트를 추가한다. 여기에서는 톰캣과의 연동과 SSL 인증서를 추가한다.
vim sites-available/"{xxx}".conf
# "{xxx}".conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName "{도메인 네임 (Domain name)}"
DocumentRoot "{톰캣의 ROOT 디렉토리 경로를 설정한다 (Tomcat Directory path)}"
JkMount /* ajp13_worker <!-- Apache + Tomcat 연동 -->
SSLEngine on <!-- SSL 연동 -->
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128:DHES-RSA-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHAAES256-SHA:AES:CAMESIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
<!-- SSL 인증서 및 키 파일 설정 -->
SSLCertificateFile "{xxx}".crt
SSLCertificateKeyFile "{xxx}".key
SSLCertificateChainFile "{xxx}".pem
SSLCACertificateFile "{xxx}".crt
<!-- default-ssl.conf 기본 설정 -->
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
<!-- 톰캣 디렉토리에 대한 다음과 같은 설정을 해야 SSL 이 적용된다. -->
<Directory "{Tomcat ROOT Directory path}">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
마지막으로 톰캣 디렉토리에서 server.xml 을 수정한다.
vim conf/server.xml
#server.xml
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- 주석 제거 -->
이제 아파치와 톰캣으로 재시작 하면 적용된다.
# restart apache
sudo systemctl restart apache2
# restart tomcat
sh shutdown.sh
sh startup.sh
마지막으로 http 로 오는 접속을 https 로 리다이렉트해주는 방법이다. ```bash
“{user defined configuration file in apache sites-available}”.conf
<VirtualHost :80> ServerName “{Domain name}” ServerAlias “{Domain name alias}” ProxyPass / “{url}” ProxyPassReverse / “{reverse url}” # HTTP -> HTTPS Redirect RewriteEngine On RewriteCond %{SERVER_PORT} !443 # ‘%{HTTPS} off’ is not work RewriteRule ^(/(.))?$ https://%{HTTP_HOST}/$1 [R=301,L] # ^(/(.*))?$ = all url patterns
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip
</VirtualHost>
댓글남기기