1 minute read

1. 문제

별도의 설정 없이 웹 서버를 열면 http을 기본으로 연결한다. http는 80 포트이며, chrome에서 접속하면 주의라고 뜬다.
주의가 뜨는 이유는 http로 접속 시에 정보들을 다른 사람이 볼 수 있다고 한다. 그래서 https 설정을 통해 보안을 강화해야 한다.
https 설정하기 위한 순서는 다음과 같다.

  1. 도메인 구매
  2. CA에 인증서 요청하여 발급하기
  3. 서버 설정 파일에 적용
  4. 가상 호스트 파일에 적용

개발 환경은 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>