무료 SSL 인증서 Let's Encrypt를 사용했다. 이 인증서는 무료라서 3개월마다 재갱신을 해주어야 한다고 함.
설정파일 설치, 내 도메인의 인증서 발급
yum install epel-release
yum install python-certbot-apache
yum install mod_ssl
certbot --authenticator standalone --installer apache
-d domain -d domain
--pre-hook "systemctl stop httpd"
--post-hook "systemctl start httpd"
domain 부분에 domain주소를 입력해준다.
httpd.conf 파일에 VirtualHost 설정
Listen 80
Listen 443
Include conf.modules.d/*.conf
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain/chain.pem
<VirtualHost _default_:443>
ServerName ...
ServerAlias ...
ErrorLog logs/443_error_log
CustomLog logs/443_access_log common
SSLEngine On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://...:8080/
ProxyPassReverse / http://...:8080/
</VirtualHost>
<VirtualHost *:80>
ServerName ...
ServerAlias ...
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L]
</VirtualHost>
apache 웹 기본 포트가 80이므로 유저가 https://를 입력하지 않는다면 80으로 접속할 것이고 http://로 접속될 것이다.
때문에 RewriteEngine을 통해 http -> https 로 리다이렉트 시켜준다.
이 RewriteEngine은 <Directory> 설정에서 AllowOverride All 으로 설정해주어야한다.
AllowOverride None이면 권한이 없어서 rewrite시키지 못하고 500 server error가 뜬다.
그러면 이제 https://로 잘 접속하게 되었을 때 Proxy를 통해 서버가 띄워져있는 포트를 보내준다.
Rewrite, VirtualHost 이거 설정하는데 진짜 삽질 많이하고 시간 오래 걸렸음..
다른 블로그 글 왕창 보면서 되게 쉽게쉽게 써놨는데 왜 난 안되지... 했지만
하나하나 해나가니 결국 코드 이해도 되고 작동도 되긴 되었다.
그래도 산 넘어 산
아, SSL 적용 확인할 때
요런 사이트를 이용해볼 수도 있다.
'main > Server' 카테고리의 다른 글
[정규표현식] Rewrite 지시자로 정규표현식 이해하기 (0) | 2022.02.07 |
---|---|
[CentOS 7] Apache Rewrite로 http -> https, non-www -> www로 주소 Redirect 시키기 (0) | 2022.02.05 |
[CentOS 7] Apache SSL 적용 중 에러 해결 과정 (0) | 2022.02.03 |
[Linux] 파일에서 특정 검색어 포함 여부 검색하기 grep (0) | 2022.02.03 |
리눅스 서버에서 윈도우로 파일 옮기기 (scp) (0) | 2022.01.23 |