본문 바로가기
서버/리눅스 서버

17.1 아파치서버를 이용한 ProxyPass 에 SSL 적용하기

by ㅋㅋ잠자 2016. 7. 30.
반응형

※ 기본적으로 Listen 설정에 80 및 443 포트가 추가되어 있어야 합니다.

/etc/apache2/apache2.conf 파일에 Listen 443 만 추가해 주시면 됩니다.


안녕하세요. 도정진입니다. 

   

기본적으로 웹사이트 보안을 위해서 SSL 을 적용해야 하는데 지금은 대부분 ProxyPass 를 이용하여 사이트를 운영중이라 일반 가상 호스트에 적용하는 방법은 적지 않도록 하겠습니다. 

(기본적으로 방식이 비슷하기 때문에 이 글로써도 응용이 가능합니다.)

   

실제로 저는 보안에 대해서 잘 모르기 때문에 SSL 을 적용하면 보안성이 높아진다고만 알고 있습니다. SSL TLS 가 무엇인지도 정확히 모릅니다. 

   

다음에 공부 한번 해보도록하고 오늘은 야매로 SSL 이 작동하게만 해 볼 예정입니다.

   

 SSL 의 경우 기본적으로 공인된 기관에서 발급을 받으면 아래처럼 정상적으로 나오지만 셀프 사인 (openssl) 을 통해서 만들면 에러가 발생합니다.

   

   

   

구글 사이트의 경우 기본적으로 https 연결이 기본인데 에러가 발생하지 않고 마지막 사진처럼 세부항목을 확인해 보면 모두 녹색입니다. 그러나 openssl 로 자가 인증서를 만들게 되면 인증서 에러가 날 뿐이지, SSL 기능적 면에는 문제가 없는것으로 알고 있습니다.

   

그럼 바로 적용해 보도록 하겠습니다.

   

   

처음으로 일단 openssl 패키지가 필요합니다.

   

apt-get install openssl

   

   

그 다음 아파치 서버의 SSL 모듈을 활성화 합니다.

   

a2enmod ssl

   

   

그 다음 ssl 인증서 파일이 저장될 위치를 생성합니다.

저는 /etc/apache2/ssl 폴더에 키 파일과 인증서를 저장할 생각입니다.

   

mkdir /etc/apache2/ssl 

   

그 다음 아래의 명령어로 인증서를 생성합니다.

   

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

   

   

그리고 인증서에 필요한 정보를 물어봅니다. 그냥 아무 문자나 입력해도 됩니다. 저는 아래와 같이 입력하였습니다.

   

   

생성된 인증서를 확인합니다.

   

   

그 다음 현재 사용하고 있는 ProxyPass 가상호스트에 대해서 설정을 합니다. 설정에 편리함을 추구하기 위해서 conf 파일 내용을 첨부합니다.

   

<Virtualhost *:80>

ServerName subdomain.yourdomain.com

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

# http 로 접속할 때 https 로 리다이렉트 구문
 

<VirtualHost *:443>

ServerName subdomain.yourdomain.com

ServerAlias ""

SSLEngine On

SSLCertificateFile /etc/apache2/ssl/apache.crt

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

SSLProtocol +TLSv1.2

   

ProxyPreserveHost On

SSLProxyEngine On

ProxyRequests Off

RequestHeader set Front-End-Https "On"

   

<Location /> 

Order allow,deny

Allow from all

ProxyPass http://your_application_ip_adress:port/

ProxyPassReverse http://your_application_ip_adress:port/

</Location>

</Virtualhost>

  

   

   

위는 공유기 설정창을 http -> https 로 redirect 하는 가상호스트 설정파일입니다.

   

다음으로 guacamole 가상호스트 설정을 보겠습니다.

   

<Virtualhost *:80>

ServerName subdomain.yourdomain.com

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

   

<VirtualHost *:443>

ServerName subdomain.yourdomain.com

ServerAlias ""

SSLEngine On

SSLCertificateFile /etc/apache2/ssl/apache.crt

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

SSLProtocol +TLSv1.2

   

ProxyPreserveHost On

SSLProxyEngine On

ProxyRequests Off

RequestHeader set Front-End-Https "On"

   

<Location /> 

Order allow,deny

Allow from all

ProxyPass http://127.0.0.1:8080/guacamole/ max=20 flushpackets=on

ProxyPassReverse http://127.0.0.1:8080/guacamole/

ProxyPassReverseCookiePath /guacamole/ /

</Location>

<Location /websocket-tunnel>

Order allow,deny

    Allow from all

ProxyPass ws://127.0.0.1:8080/guacamole/websocket-tunnel

ProxyPassReverse ws://127.0.0.1:8080/guacamole/websocket-tunnel

</Location>

</Virtualhost>

  

   

적용은 아래처럼 잘 됩니다. 

   

   

   

   

감사합니다.

반응형

댓글