사악미소
현대마법의 공방
사악미소
전체 방문자
오늘
어제
  • 분류 전체보기
    • Document
    • JavaScript
    • jQuery
    • Spring Web
      • Spring Framework
      • Spring Boot
    • Android
      • Java Code
      • Setting
    • iOS
      • Swift Code
      • Setting
    • PHP
      • Code
      • Setting
    • AWS
    • LINUX
      • Rocky Linux
      • CentOS
    • Node.js
    • Developer Tool
    • GIT
    • MAC
    • Scraping Document
    • MariaDB
    • WYSIWYG
    • Scouter
    • Docker
    • Planning
    • 용어정리
반응형

인기 글

최근 댓글

Programmer 사악미소.
사악미소

사악미소의 현대마법의 공방

LINUX/CentOS

[Linux] CentOS7 - HTTPS 접속을 위한 Apache 웹 서버의 Mod_Proxy 설정

2022. 11. 15. 19:34
728x90

 

※ 해당 포스팅은 Let's Encrypt 를 이용하여 SSL 인증을 받은 경우를 전제로 작성되었습니다.

 

Let's Encrypt - 무료 SSL/TLS 인증서

 

letsencrypt.org

 

 

[AWS] EC2 - Amazon Linux 2 SSL / TLS 인증

해당 포스팅은 자습서 : Amazon Linux 2에서 SSL / TLS 구성의 내용을 기반으로 작성하였다. Amazon Linux 2 AMI 서버를 구축하고, ( 참고 : [AWS] EC2 - Amazon Linux 2 AMI 서버 구축 ) Apache 웹 서버 세팅을 완료했다

saakmiso.tistory.com

 


 

#1. Virtual Host SSL 인증 확인

 

※ Virtual Host를 SSL 사용전에 인증을 받았다면

 

 

Let's Encrypt를 통해 SSL 인증 작업을 완료 했다면 위와 같을 것이다.

$ ls /etc/httpd/conf.d -al
autoindex.conf
php.conf
README
ssl.conf
userdir.conf
virtual-기존.conf
virtual-신규-le-ssl.conf
welcome.conf

기존 작성한 virtual-기존.conf 설정이외에

 

 

SSL 인증설정을 가지는 virtual-신규-le-ssl.conf 라는 파일이 추가된 것을 확인 할 수 있다.

 

아래 명령을 통해 해당 파일을 확인해 보자.

$ cat /etc/httpd/conf.d/virtual-신규-le-ssl.conf
<IfModule mod_ssl.c>
  <VirtualHost *:443>
    ServerName www.도메인주소.com
    ServerAlias www.도메인주소.com
    ServerAdmin wicked@saakmiso.com
    DocumentRoot /home/ec2-user/작업경로
    <Directory /home/ec2-user/작업경로>
      Options Indexes FollowSymlinks
      AllowOverride all
      Require all granted
    </Directory>
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/www.도메인주소.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.도메인주소.com/privkey.pem
  </VirtualHost>
</IfModule>

 

 


 

#2. Virtual Host 설정 변경

 

Apache

$ sudo vim /etc/httpd/conf.d/버추얼_호스트-le-ssl.conf
<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName www.도메인주소.com
        ServerAlias www.도메인주소.com

        ProxyRequests Off
        ProxyPreserveHost On
        AllowEncodedSlashes NoDecode

        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>

        SSLEngine On
        SSLProxyVerify None
        SSLProxyCheckPeerCN Off
        SSLProxyCheckPeerName Off
        SSLProxyCheckPeerExpire Off

        Include /etc/letsencrypt/options-ssl-apache.conf
        
        SSLProxyEngine On
        SSLCertificateFile /etc/letsencrypt/live/www.도메인주소.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.도메인주소.com/privkey.pem
        #SSLCertificateChainFile /etc/letsencrypt/live/www.도메인주소.com/chain.pem
        SSLCACertificateFile /etc/letsencrypt/live/www.도메인주소.com/chain.pem

        ProxyPass / http://127.0.0.1:8181/
        ProxyPassReverse / http://127.0.0.1:8181/

        RequestHeader set X-Forwarded-Proto "https"
        RequestHeader set X-Forwarded-Port "443"

        ErrorLog logs/dummy-host.example.com-error_log
        CustomLog logs/dummy-host.example.com-access_log common

    </VirtualHost>
</IfModule>

 

 

01) 프록시 세팅

ProxyRequests Off

on일 경우 Forward Proxy로 동작, Off일 경우 Reverse Proxy로 동작하는 옵션

 

ProxyPreserveHost On

HTTP 요청 헤더의 Host: 부분을 유지하는 옵션

 

AllowEncodedSlaxhes NoDecode

웹 서버 뒤에서 인코딩된 / 를 디코딩 하지 않도록 설정하는 옵션

 

<Prox *>
    Order deny,allow
    Allow from all
</proxy>

프로식에 대한 보안 설정이다.

deny 조건을 먼저 확인한 후 allow 조건을 확인하며, 모든 호스트에서 접속이 가능하다.

 

 


 

02) SSL 세팅

SSLProxyEngine On
SSLCertificateFile /인증서_경로/cert.pem
SSLCertificateKeyFile  /인증서_경로/privkey.pm
SSLCertificateChainFile /인증서_경로/chain.pem
SSLCACertificateFile /인증서_경로/chain.pem

 

SSLEngine을 사용하여 Apache가 SSL을 지원하도록 하는 옵션이다.

이때, <VirtualHost *:443>로 443포트로 매핑해 주는것이 좋다.

 

※ SSLCertificateChainFile, SSLCACertificateFile 차이

Apache2에서는 SSLCertificateChainFile, SSLCACertificateFile 같은 의미로 사용되는데 

2.4.8 버전 이후로 SSLCertificateChainFile가 사용불가능하고, 오직 SSLCACertificateFile가 사용된다고 한다.

 


 

03) SSL을 위한 Proxy Settings

 

SSLEngine On

SSL 통신을 Proxy 할 수 있도록 한다.

 

SSLProxyVerify None

요청을 원격 SSL 서버로 전달하도록 프록시를 구성할 때, 원격 서버의 인증서 확인을 구성한다.

None 원격 서버 인증서 필요 없음
Oprional 원격 서버가 유효한 인증서를 제공할 수 있다.
Require 원격 서버가 유효한 인증서를 제공해야 한다.
Optional_no_ca 원격 서버가 인증서를 제공할 수 있다.( 그러나 검증할 필요는 없음 )

 

SSLProxyCheckPeerCN Off

vscode 서버의 비공인 인증서를 허용한다.

 

 

SSLProxyCheckPeerName Off

mod_ssl이 SSL 클라이언트로 작동할 때 서버 인증서에 대한 호스트 이름 검사

 

 

SSLProxyCheckPeerExpire Off

 

서버 인증서의 만료여부를 확인할지 검사

프록시 서버에서 SSL 검을을 하였기 때문에 중계된 서버에서 검사를 할 필요가 없음을 알리는 세팅이다.

 

 

ProxyPass / http://127.0.0.1:8181/

외부에서 들어온 www.도메인주소.com 요청을 127.0.0.1:8181로 변환시켜주는 기능이다.

 

 

ProxyPassRevers / http://127.0.0.1:8181/

ProxyPass 옵션과 동일하지만, 내부에서 리다이렉트가 일어났을 경우 생성되는

URL의 도메인이 127.0.0.1:8181이 되버리기 때문에 이를 다시

www.도메인주소.com 으로 변환해 주는 기능이다.

 

 

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

프록시를 타고 들어온 요청이 Https 요청이고, 443번 포트를 통해 왔음을 알리는 헤더를 추가하는 기능이다.

 

 


 

 

참고 : https://always0ne.github.io/server/ApacheToWASProxy/

 

Proxy Pass를 사용하여 Apache Web Server에 WAS 연동하기

Reverse Proxy를 사용하여 웹 서버(apache)에 웹 어플리케이션 서버(was)를 연동해 보자

always0ne.github.io

참고 : https://m.blog.naver.com/mod_ssl모듈_추가_및_설정

 

mod_ssl모듈 추가 및 설정

아파치를 설치할 때 시작옵션에 지정해 주지 않으면 ssl과 관련된 내용은 나중에 지정해 줘야 한다. ssl이 ...

blog.naver.com

참고 : https://lky1001.tistory.com/130

 

아파치2 SSL 설정

준비물openssl을 이용해 자체 발급 또는 인증 업체에서 구매. 아파치2용 인증서, privite key, chain bundle, root 안드로이드에서 chain과 root를 등록안하면 인증서 오류 남. 1. 아파치2 설치$ sudo apt-get update$

lky1001.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'LINUX > CentOS' 카테고리의 다른 글

[Linux] MariaDB 설치 및 세팅  (6) 2023.02.23
[Linux] CentOS7 - MySQL / MariaDB 데이터 베이스 자동 백업 프로세스  (0) 2023.01.27
[Linux] CentOS7 - GIT을 이용한 버전관리 시스템 구축  (0) 2021.07.04
[Linux] CentOS7 - Java Web 서버 - Oracle 설치 및 설정  (0) 2021.07.04
[Linux] CentOS7 - Java Web 서버 - 실운영을 위한 Tomcat 설정  (1) 2021.07.01
    'LINUX/CentOS' 카테고리의 다른 글
    • [Linux] MariaDB 설치 및 세팅
    • [Linux] CentOS7 - MySQL / MariaDB 데이터 베이스 자동 백업 프로세스
    • [Linux] CentOS7 - GIT을 이용한 버전관리 시스템 구축
    • [Linux] CentOS7 - Java Web 서버 - Oracle 설치 및 설정
    사악미소
    사악미소

    티스토리툴바