build my life

AWS EC2 + Spring Boot + Nginx HTTPS 설정하기(feat.letsencrypt 활용) 본문

Project

AWS EC2 + Spring Boot + Nginx HTTPS 설정하기(feat.letsencrypt 활용)

dalovee 2023. 4. 11. 00:43
728x90

client 요청은 HTTPS인데 서버는 HTTP라서 보안상 문제 발생!

서버도 HTTPS 설정을 해보자

 

1. EC2 인스턴스 생성

https://hapsunny.tistory.com/53

 

[AWS] Spring boot project AWS EC2 배포 (1)

✅ AWS EC2 인스턴스 생성 1. 인스턴스 이름 생성 2. 필요한 컴퓨팅 소스 설정 - ubuntu 20.04 - 프리티어 사용 가능한지 꼭 확인하기..! (과금막아...!) 3. 키페어 생성 📌 중요 : key 생성 후 안전한 곳에

hapsunny.tistory.com

2. 도메인 발급 및 연결 (https://www.gabia.com/)

도메인은 발급 안받아도 된다고 하긴 하는데... 어떻게 하는지 몰라서....

SSL 인증하려면 도메인이 있어야한다기에.... 가비아에서 구매함!

구매한 도메인과 우분투 서버 주소 연결하기(DNS 관리 > 레코드 수정)

 

3. EC2 접속해서 jar 파일 실행한 후 도메인으로 접속 되는지 확인

 

4. Nginx 설치 및 SSL 인증을 통해 HTTPS 적용 (letsencrypt 인증서를 certbot을 통해 받을 것)

4.1 업데이트

$ sudo apt-get update

4.2 letsencrypt 설치

$ sudo apt-get install letsencrypt -y

4.3 letsencrypt의 형태로 ssl/tls 인증서를 무료로 제공하는 certbot 라이브러리 설치

-> nginx도 같이 설치

$ sudo apt install certbot python3-certbot-nginx

4.4 nginx 실행

$ sudo service nginx start

서버 주소 or 도메인으로 접속했을 때 Welcome to nginx 뜨면 성공!

 

4.5 certbot 통해 인증서 받기

$ sudo certbot --nginx -d 나의도메인주소

 

1) 메일 주소 입력 2) 약관동의 A치고 엔터 3) 메일공유 N치고 엔터 4) 1(No Redirect) or 2(Redirect) 선택사항 중 2번 선택하고 진행함

=> https 적용되었는지 확인

추가(선택사항) : 아래 명령어를 통해 90일마다 만료되는 인증서 자동 갱신 가능
$ sudo certbot renew --dry-run

 

5. Nginx로 온 요청을 스프링 부트 서버로 Redirect 시켜보자

5.1 nginx 폴더 이동

$ cd /etc/nginx

5.2 chmod 777 : 수정 삭제 생성 권한 주기

$ sudo chmod 777 ./sites-available
$ sudo chmod 777 ./sites-enabled

5.3 sites-available 폴더로 이동 후 test.conf 파일 생성

$ cd /etc/nginx/sites-available
$ sudo vi ./test.conf

5.4 test.conf 파일에 아래 내용 작성

# 80포트 -> 8080포트로 리다이랙팅
server {
    listen 80;
    listen [::]:80;

    server_name [도메인];

    location / {
         proxy_pass http://[도메인]:8080;
    }
}

# https 등록
server {
        ssl on;
        listen 443 ssl;
        server_name [도메인];

        ssl_certificate /etc/letsencrypt/live/나의도메인주소/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/나의도메인주소/privkey.pem;

        location / {
                proxy_pass http://[도메인]:8080;
        }

}

5.5 test.conf 파일을 sites-enabled 폴더에 복사 후 default 파일 삭제

default 파일을 삭제하는 이유는 생성한 test.conf를 설정파일로 사용하기 위함

$ sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled
$ cd /etc/nginx/sites-enabled
$ rm default

 

6. nginx 다시 시작

$ sudo service nginx restart

=> 성공!

 


참고)

https://livelyoneweek.tistory.com/13

 

스프링 서버 HTTPS(Nginx, letsencrypt 활용) 적용

2022 03.27 항해 프로젝트를 진행하면서 (스프링) 프로젝트에 HTTPS 적용 한 것에 대해 기록을 남기고자 한다. ​ (이미지나 기타 설명은 여유되면 추가적으로 넣겠음) ​ 사용한 것 ​ 1.EC2 우분투 서

livelyoneweek.tistory.com

https://velog.io/@sloools/Spring-Boot

 

jar파일로 실행하는 Spring Boot 웹서비스 http 리다이렉팅, https ssl 설정(Let's encrypt)

ssl 인증서 받아서 spring boot에 올리기https://galid1.tistory.com/612certbot 설치 공식 문서https://certbot.eff.org/lets-encrypt/ubuntufocal-othernginx , spri

velog.io

https://dkswnkk.tistory.com/675

 

가비아 + Linux + Nginx + Cerbot/SSL을 활용한 https 설정

서론 가비아 + Linux + Nginx + Cerbot/SSL을 활용한 https 설정에 대해 문서화하고자 글을 작성하게 되었습니다. 환경 웹 서버: Nginx 인증서 발급: Cerbot/SSL 운영체제: Amazone Linux 도메인 구매: 가비아 목차

dkswnkk.tistory.com

 

728x90