시나리오
클라이언트 개발자의 요청사항으로 WAS를 http가 아닌 https 프로토콜로 배포해야한다.
SSL 인증서를 등록하기 위해서는 구매한 도메인 주소가 필요하다. 일반적으로 도메인 주소와 SSL 인증서는 일대일 관계를 가진다.
여러 개의 서버를 사용하는 경우, DNS 서버에 등록해야 할 주소는 도메인 주소이다. 스프링 부트로 배포한 WAS의 IP주소를 DNS 서버에 등록하고 SSL 인증서를 발급받은 것은 일반적이다. 이 도메인 주소를 통해 WAS에 접근하고, SSL 인증서를 통해 안전한 통신을 할 수 있다.
문제 상황 발생 : WAS가 여러대일 경우 그만큼 SSL 인증서 발급이 필요해진다.
해결 방안 : Nginx 웹 서버를 사용하여 클라이언트 단인 React 서버와 WAS 사이에 SSL 인증서를 관리한다.
Let's Encrypt은 무료로 SSL 인증서를 발급받을 수 있는 인증기관이다.
Let's Encrypt을 사용하여 SSL 인증서를 발급받으려면 certbot이라는 프로그램을 사용해야한다.
sudo apt-get update
sudo apt install nginx
nginx 를 설치한 후 포트포워딩을 해주어야 한다.
지금 상태로 Nginx를 실행하면 오류가 발생한다.
그 이유는 Nginx는 기본적으로 80번 포트를 할당받아 외부와 통신하는데 우분투에서 80번 포트는 Apache가 사용하고 있기 때문이다.
fuser -k -n tcp 80
80포트를 사용하는 프로세서를 kill 해주었다.
이제 nginx 를 시작해준다.
sudo systemctl start nginx
nginx.conf 파일 설정해준다.
sudo snap install certbot --classic
sudo certbot --nginx