IT/AWS

AWS HTTP를 HTTPS로 리다이렉트하는 방법

binary? 2024. 5. 17. 11:49
728x90

AWS HTTP를 HTTPS로 리다이렉트하는 방법

 

안녕하세요. AWS EC2로 서버구축하고 url을 보면 http:ec2퍼블릭ipv4:8080 이런식으로 제공됩니다.

이번 포스팅은 http가 아닌 https로 접속할 수 있도록 리다이렉트하는 방법을 아래에 정리해보겠습니다.

정리하기에 앞서 처음보는 용어가 많이 나와서 정리한번 하고 가겠습니다.

  • Nginx: 고성능 웹 서버로, HTTP 및 HTTPS 설정과 리버스 프록시 등을 지원
  • SSL: 데이터를 암호화하여 안전하게 전송하는 프로토콜 (현재는 주로 TLS로 대체되었지만 SSL 인증서라는 용어로 많이 쓰임)
  • TLS: SSL의 개선된 버전으로, 더 강력한 보안을 제공하는 프로토콜
  • Let's Encrypt: SSL/TLS 인증서를 무료로 발급해주는 공인 인증 기관
  • Certbot: Let's Encrypt의 SSL/TLS 인증서를 쉽게 발급 및 갱신할 수 있게 도와주는 도구

Nginx 설치

sudo apt update sudo apt upgrade sudo apt install nginx -y

 

설치 확인

sudo systemctl status nginx

SSL/TLS 설정

Nginx의 SSL/TLS 설정에는 인증서가 필요하다. Let's Encrypt를 사용하여 무료로 발급받을 수 있습니다. 대신 만료기한이 90일이기 때문에 기한이 지나면 재발급 받아야합니다.

Let's Encrypt 설치

sudo apt-get install letsencrypt

Certbot 설치

sudo apt-get install certbot python3-certbot-nginx

Certbot - Nginx 연결

sudo certbot --nginx

위에서 sudo certbot --nginx 명령어로 도메인을 등록합니다.

동의하시겠습니까? 는 Yes하면 되고 본인의 url 입력하면 됩니다.

ex) binary96.store

여기서 저는 아래처럼 오류가 발생하였는데 도메인 소유권을 확인해줘야합니다.

오류발생

해결

밑에 생성값을 확인한 후

터미널을 새로 하나 열어 접속한다 (도메인 소유권확인)

개인마다 임의생성값 다

 

저는 SpringBoot 프로젝트이기 때문에 정적파일위치인 static 폴더안에 만들었습니다.

폴더명: well-konwn.acme-challenge

도메인 소유권 키 값이 아래처럼 주어지면BgriznKF6VnHBgM4nirNbSO94EBYmH63_pmVi93Ycso.jRjwt~~~~~

토큰값 .을 기준으로 왼쪽은 파일명

토큰전체값은 파일내용으로 입력하시면 됩니다.

BgriznKF6VnHBgM4nirNbSO94EBYmH63_pmVi93Ycso.jRjwt~~~~~

아이고 드디어 성공했네

Nginx 환경설정

설정파일 -> /etc/nginx/conf.d

cd /etc/nginx/conf.d

sudo vi default.conf

아래처럼 내용을 추가해준다.

server {
        listen 80;
        server_name binary96.store;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;
        server_name binary96.store;

        ssl_certificate /etc/letsencrypt/live/binary96.store/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/binary96.store/privkey.pem;

        location / {
                proxy_set_header X-Real-Ip $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_pass http://127.0.0.1:8080;
        }
}

 

아래명령어로 확인한다.

sudo nginx -t

nginx설정 적용 위해 nginx 재시작

sudo systemctl restart nginx

우여곡절이 너무 많았는데 드디어 성공했다..

728x90