[Apache] Apache2 https port:433 설정
1. 문제
별도의 설정 없이 웹 서버를 열면 http을 기본으로 연결한다. http는 80 포트이며, chrome에서 접속하면 주의라고 뜬다.
주의가 뜨는 이유는 http로 접속 시에 정보들을 다른 사람이 볼 수 있다고 한다. 그래서 https 설정을 통해 보안을 강화해야 한다.
https 설정하기 위한 순서는 다음과 같다.
- 도메인 구매
- CA에 인증서 요청하여 발급하기
- 서버 설정 파일에 적용
- 가상 호스트 파일에 적용
개발 환경은 Ubuntu 20.04, Apache2, Tomcat9, Reverse Proxy, mod_proxy 이다.
2. 해결 방법
2-1. 도메인 구매
도메인 구매하는 방법은 다양한 플랫폼을 통해 수행하면 된다.
2-2. CA에 인증서 요청하여 발급
나는 Let’s Encrypt에서 CA를 요청했는데 여기는 3개월에 한 번씩 갱신해줘야 한다고 한다.
그런데 Certbot을 사용하면 Let’s Encrypt 인증서를 자동으로 발급/갱신 해준다고 한다.
그래서 Cerbot이라는 갱신 봇을 설치하는 방법은 다음과 같다.
1
2
3
4
sudo apt update
sudo apt upgrade
sudo apt install certbot
Certbot에서 Standalone 방식을 이용해 인증서를 발급 받기 위해서는 서버가 중단되어야 한다.
1
2
3
systemctl stop apache2
sudo certbot certonly --standalone -d {도메인}
{도메인}에는 자신이 구매한 example.com 등을 입력해주면 된다.
자신의 이메일을 삽입하고 yes를 두 번 입력해 넘기다 보면 IMPORTANT NOTES
에 Congratulations라고 뜨면 정상적으로 설치 된 것이다.
2-3. 서버 설정
1
2
3
4
5
6
sudo vi /etc/apache2/ports.conf # ports.conf path
# In ports.conf
<IfModule ssl_module>
Listen 443
</IfModule>
그리고 ssl 모듈을 활성화한다.
1
sudo a2emod ssl
2-4. 가상 호스프 파일
설정은 다 끝냈으니 적용만 시켜주면 된다.
http인 포트 80에 접속 시 https인 포트 443로 리다이렉트 해주면 된다.
sudo vi 000-default.conf
을 하고 해당 파일에 밑에 코드처럼 작성하자.
1
2
3
4
5
6
7
8
9
10
11
# 80 port 설정 태그에 추가
<VirtualHost *:80>
RedirectPermanent / https://{도메인}
</VirtualHost>
# 443 port 설정 태그에 추가
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/{도메인}/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/{도메인}/privkey.pem
</VirtualHost>