※ 해당 포스팅은 Let's Encrypt 를 이용하여 SSL 인증을 받은 경우를 전제로 작성되었습니다.
#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/
참고 : https://m.blog.naver.com/mod_ssl모듈_추가_및_설정
참고 : https://lky1001.tistory.com/130
'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 |