아파치와 톰캣이 연동된 상태에서 OpenSSL을 적용할 것이다. 아파치 설치 및 톰캣 연동에 대해서는 아래의 링크를 참고하면 된다.
■ 관련글
OpenSSL 설치 및 인증서 생성
OpenSSL 설치 및 인증서 생성에 관한 부분은 아래 링크로 들어가 OpenSSL 설치 및 인증서 생성 부분을 참고하면 된다.
OpenSSL 적용
1. SSL 디렉토리 생성 및 인증서 복사
관리의 편의를 위해 ssl 인증서를 모아둘 디렉토리를 생성한다.
[mgt@localserver: ~$] sudo mkdir /etc/apache2/ssl |
생성한 디렉토리로 인증서를 복사한다.
[mgt@localserver: ~$] sudo cp server.crt /etc/apache2/ssl/server.crt [mgt@localserver: ~$] sudo cp server.csr /etc/apache2/ssl/server.csr [mgt@localserver: ~$] sudo cp server.key /etc/apache2/ssl/server.key |
2. SSL 모듈 활성
Apache의 SSL 모듈을 활성화한다. 이때 아파치를 재시작 하라는 메시지가 나오는데, 일단 무시한다.
[mgt@localserver: ~$] sudo a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: service apache2 restart |
3. /etc/apache2/ports.conf 파일 수정
아래 내용을 ports.conf 파일에 추가한다.
[mgt@localserver: ~$] sudo nano /etc/apache2/ports.conf # 내용추가 <IfModule mod_ssl.c> Listen 443 </IfModule> |
ports.conf 파일에 내용 추가
4. default-ssl.conf 파일을 복사
default-ssl.conf 파일을 복사해서 board-ssl.conf로 이름을 변경하였다. 복사한 파일명은 본인이 알기 쉽게 정하면 된다. (ex, 도메인명으로)
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/board-ssl.conf |
5. 복사한 파일 수정
위에서 복사한 파일을 수정한다.
[mgt@localserver: ~$] sudo nano /etc/apache2/sites-available/board-ssl.conf # 해당 부분 수정 SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key |
표시된 부분을 수정한 모습
다음으로 아래 사진에 표시한 부분의 주석(#)을 제거한다.
6. 000-default.conf (아파치 설정파일) 수정
아파치 기본 설정 파일인 000-default.conf 에 SSL 내용을 추가한다.
[mgt@localserver: ~$] sudo nano /etc/apache2/sites-available/000-default.conf |
# <VirtualHost *:80> 태그 안에 추가 RedirectPermanent / https://아이피 주소 # 000-default.conf 에 추가 <VirtualHost *:443> ServerAdmin webmaster@localhost #DocumentRoot /var/www/html DocumentRoot /var/lib/tomcat8/webapps/ROOT/ JkMount /* tomcat1 SSLEngine on SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
<VirtualHost *:80> 태그에 추가한 RedirectPermanent / https://192.168.137.128 부분은 HTTP로 연결 시 자동으로 HTTPS로 연결되도록 설정하는 부분이다.
로컬일 경우 https://127.0.0.1 을 적으면 되고, 도메인을 사용 중이라면 https://도메인 을 적으면 된다.
<VirtualHost *:443> 태그 부분은 HTTPS 연결에 관한 부분이다. 위에서는 DocumentRoot에 톰캣의 배포 경로를 입력해둔 상태인데, 톰캣에 배포를 하지 않았다면, /var/www/ssl 이런 식으로 임의의 디렉토리를 만들고 거기에 html 파일을 만들어 둔다. 그리고 그 경로를 DocumentRoot에 적어두면 된다.
Ex) DocumentRoot /var/www/ssl |
JkMount 부분은 아래의 톰캣 연동글을 참고하면 된다.
7. board-ssl 활성화
[mgt@localserver: ~$] sudo a2ensite board-ssl Enabling site board-ssl. To activate the new configuration, you need to run: service apache2 reload |
8. 방화벽 설정
방화벽에 OpenSSL의 포트인 443 포트로 접속을 허용하도록 변경한다
[mgt@localserver: ~$] sudo ufw allow 443/tcp Rule added Rule added (v6) |
방화벽 설정을 하고 443포트를 확인해보자.
[mgt@localserver: ~$] netstat -lnp | grep 443 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 :::443 :::* LISTEN - tcp6 0 0 :::443 :::* LISTEN - tcp6 0 0 :::443 :::* LISTEN - |
[mgt@localserver: ~$] sudo /etc/init.d/apache2 restart [ ok ] Restarting apache2 (via systemctl): apache2.service. |
개인 서명이라 신뢰할 수 없다고 나온다. 하지만 보안 접속은 정상적으로 잘 된다.
■ 참고
'운영체제, 서버 > 리눅스' 카테고리의 다른 글
[Ubuntu] 아파치(Apache) OpenSSL 적용 (6) | 2017.11.09 |
---|---|
[Ubuntu] 아파치(Apache) 설치 및 톰캣(Tomcat8) 연동 (9) | 2017.09.19 |
[Ubuntu] 우분투 서버에서 파일 업로드 시 권한문제 해결 (0) | 2017.08.23 |
[Ubuntu] 우분투 서버(16.04)에 MySQL(5.7) 설치 (7) | 2017.08.14 |
[Ubuntu] 우분투 서버(16.04)에 톰캣 설치 (3) | 2017.08.13 |