Tomcat SSL 적용시 https로 자동 리다이렉트 설정하기

요즘은 대부분의 사이트들이 SSL을 사용해서 https:// 로 연결을 합니다. SSL을 사용하던 초창기에는 성능 문제로 로그인, 회원가입 등 주요한 데이터가 전달되는 곳에 부분적으로 적용을 하였는데, 요즘은 서버와 클라이언트의 성능이 좋아져서 사이트 전체에 SSL을 적용하는것이 일반적입니다.

 

하지만 대부분의 사람들은 http:// 주소를 사용해서 페이지 접근하므로 http 요청을 https 요청으로 리다이렉트 시켜야 합니다. Tomcat 에서 이것을 자동으로 처리하도록 설정하는 방법을 알아보겠습니다.

 

 

1. SSL설정을 먼저 합니다.

 

먼저 SSL 설정이 되어 있다고 가정합니다. 설정이 되고 https:// 로 접근이 된다면 Tomcat 의 server.xml 파일에 다음과 유사하게 설정되어 있을 것입니다.

 

 

 

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

 

 

<Connector port="80" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="443" />

 

 

<!-- JavaKeyStore 의 경우 -->

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"

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

clientAuth="false" sslProtocol="TLS"

keystoreFile="conf/domain.jks" keystorePass=".jks 비밀번호" />

 

 

<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

 

 

2. WEB-INF/web.xml에 리다이렉트 설정 추가하기

 

아래 설정을 web.xml 파일에 추가합니다. 그리고 Tomcat 을 재시작하고, http://domain/index.jsp 처럼 호출 하게 되면 https://domain/index.jsp 로 바로 리다이렉트 되는 것을 확인할 수 있을 것입니다.

 

 

<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>

 

 

3. 특정 리소스는 http와 https 양쪽 모두 처리되도록 설정하기:wq

 

아래설정은 위의 설정 아래에 추가하면 /images/*, /css/* 리소스는 http 또는 https 모두에서 처리됩니다.

 

 

<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.xml 파일에 <security-constraint> 태그는 여러번 나올 수 있습니다. Tomcat 에서 보안 목적으로 특정 HTTP Method 를 제한하는 것도 <security-constraint> 를 사용합니다. 필요하면 이것도 같이 추가하면 되겠습니다.

Tomcat SSL 적용시 https로 자동 리다이렉트 설정하기

Windows에서 TOMCAT에 개발용으로 SSL 적용하기

SSL 동작 방식을 간단히 알아보기

 

 

*SSL 인증서 적용 후 시험

 

openssl s_client -connect dev-certi.newssalad.com:8443 -tls1

반응형
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,

백업

 

docker exec <CONTAINER> /usr/bin/mysqldump -u root — password=root <DATABASE> > backup.sql

 

 

복구

 

cat backup.sql | docker exec -i <CONTAINER> /usr/bin/mysql -u root --password=root <DATABASE>

반응형

'IT > Docker' 카테고리의 다른 글

[Docker] 기본 명령어  (0) 2020.04.03
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,

1. 백업

 

1.1 mysql 백업

 

- 기존 mysql 비밀번호 확인

# cat /opt/redmine-3.3.3-1/apps/redmine/htdocs/config/database.yml

 

production:

adapter: mysql2

database: bitnami_redmine

host: localhost

username: bitnami

password: xxxxxxxxxx

 

- mysql 백업 파일 생성

 

# /opt/redmine-3.3.3-1/mysql/bin/mysqldump -u bitnami -p bitnami_redmine > backup.sql

 

 

1.2 redmine 데이터 파일 백업

# cd /opt/redmine-3.3.3-1/apps/redmine/htdocs

# tar zcvf files.tar.gz files

 

1.3 redmine 플러그인 백업

# cd /opt/redmine-3.3.3-1/apps/redmine/htdocs

# tar zcvf plugins.tar.gz plugins


2. 복구

 

1.1 신규 서버에 bitnami-redmine 설치. 

 

- 설치 바이너리 다운로드 (https://bitnami.com/stack/redmine/installer)

 

# wget https://downloads.bitnami.com/files/stacks/redmine/3.3.3-1/bitnami-redmine-3.3.3-1-linux-x64-installer.run

 

 

- 설치

# chmod 755 bitnami-redmine-3.3.3-1-linux-x64-installer.run

# ./bitnami-redmine-3.3.3-1-linux-x64-installer.run

 

- 신규 서버의 http://xxx.xxx.xxx.xxx/redmine/phpmyadmin 외부 접근 가능하게 하기 위해 내 아이피를 추가

# vi /opt/redmine-3.3.3-1/apps/phpmyadmin/conf/httpd-app.conf

 

<IfVersion >= 2.3>

Require local

Require ip xxx.xxx.xxx.xxx

</IfVersion>

 

1.2 신규 서버의 mysql 비밀번호 확인

# cat /opt/redmine-3.3.3-1/apps/redmine/htdocs/config/database.yml

 

production:

adapter: mysql2

database: bitnami_redmine

host: localhost

username: bitnami

password: xxxxxxxxxx

 

1.3 mysql 복구

 

- 기본설치된 redmine db를 삭제

# /opt/redmine-3.3.3-1/mysql/bin/mysql -u bitnami -p bitnami_redmine

 

mysql> drop database bitnami_redmine;

Query OK, 1 rows affected (0.00 sec)

 

mysql> create database bitnami_redmine;

Query OK, 1 row affected (0.00 sec)

 

mysql> exit

Bye

 

복원용 DB파일을 로딩

 

# /opt/redmine-3.3.3-1/mysql/bin/mysql -u bitnami -p bitnami_redmine < backup.sql

 

 

1.4 redmine 데이터 파일 복구

# cd /opt/redmine-3.3.3-1/apps/redmine/htdocs/

# rm -f files

# tar zxvf files.tar.gz

 

1.5 redmine 플러그인 복구

# cd /opt/redmine-3.3.3-1/apps/redmine/htdocs

# rm -rf plugins

# tar zxvf plugins.tar.gz

 

1.6 DB migration 처리

# cd /opt/redmine-3.3.3-1/apps/redmine/htdocs

# /opt/redmine-3.3.3-1/ruby/bin/rake db:migrate RAILS_ENV="production"

# /opt/redmine-3.3.3-1/ruby/bin/rake redmine:plugins:migrate RAILS_ENV=production

 

1.7 시작 프로그램 등록

 

- Redhat 계열

$ cp /opt/redmine-3.3.3-1/ctlscript.sh /etc/init.d/bitnami-redmine

 

# 부팅스크립트 시작 부분 수정

$ vi /etc/init.d/bitnami-redmine

 

#!/bin/sh

#

# chkconfig: 2345 80 30

# description: Bitnami services

 

# 서비스로 등록

$ chkconfig --add bitnami-redmine

 

- Ubuntu 계열

$ sudo cp /opt/redmine-3.3.3-1/ctlscript.sh /etc/init.d/bitnami-redmine

$ sudo chmod +x /etc/init.d/bitnami-redmine

 

# 부팅 스크립트 시작부분 수정

$ sudo vi /etc/init.d/bitnami-redmine

 

### BEGIN INIT INFO

# Provides: bitnami-redmine

# Required-Start: $remote_fs $syslog

# Required-Stop: $remote_fs $syslog

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Start daemon at boot time

# Description: Enable services provided by daemon.

### END INIT INFO

 

# 서비스로 등록

$ sudo update-rc.d -f bitnami-redmine defaults

$ sudo update-rc.d -f bitnami-redmine enable

반응형
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,