ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Nginx로 HTTPS 레이어 구축하기
    인프라/nginx 2024. 4. 19. 21:31

     

    기존 서비스에서 사용하던 AWS의 ALB에서 비용이 발생한다는 사실을 발견하였습니다. 현재는 단일 인스턴스를 사용하고 있는 상황이라 ALB가 하는 역할은 HTTPS 요청을 받아주는 역할 뿐이기 때문에 이번에 Nginx를 사용하는 방법으로 변경해보려고 합니다.

     

    (linux는 RHEL을 사용하고 있습니다.)


    글은 다음 순서로 진행됩니다.

    1. 시작하기 전에 - nginx 설치 및 작동 확인

    2. 패키지 설치 - 인증서 발급에 필요한 패키지 설치

    3. 인증서 발급

     

     

    1. 시작하기 전에

    EC2에 Nginx 설치를 합니다.

    // 설치
    $ sudo yum update -y
    $ sudo yum install nginx -y
    
    // 서비스 실행
    $ sudo systemctl start nginx

     

    80 포트로 접근시 다음과 같은 index.html을 확인할 수 있습니다.

     

     

    2. 패키지 설치

    2-1. snap 설치 ( 공식문서 )

    // add EPEL in RHEL 9
    $ sudo yum install install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
    $ sudo yum update
    
    
    // snap 설치
    $ sudo yum install snapd
    
    // snap 활성화
    $ sudo systemctl enable --now snapd.socket
    $ sudo ln -s /var/lib/snapd/snap /snap
    
    $ sudo systemctl restart snapd.service

     

    2-2. Certbot 설치

    // Certbot 설치
    $ sudo snap install --classic certbot
    
    // Certbot 커맨드라인 사용준비
    $ sudo ln -s /snap/bin/certbot /usr/bin/certbot

     

     

    3. 인증서 발급

    // 인증서 발급
    $ sudo certbot --nginx

     

    인증서에 필요한 상세 정보 입력하는 안내들이 나옵니다.

    이메일 입력해주고

     

    약관 동의해주고

     

     

    인증서 발급할 도메인도 입력해줍니다.

     

     

    하고나니 이런 결과를 줍니다.

    증명서 세팅은 되었으니나 매칭되는 server 블록이 설정파일에 없어서 적용은 못했다고 합니다.

     

     

     

    그럼 이제 nginx.conf 파일 찾아서 인증서 등록을 해줍니다.

    위에서 확인한 certificate가 저장된 경로와 key가 저장된 경로를 확인해서 설정파일에 옮겨줍니다.

    ( ssl_certificate <=> certificate / ssl_certificate_key <=> key )

     

     

    혹은 server_name에 설정하려고하는 도메인 네임을 지정해주고 아래의 명령어를 실행할 수도 있습니다.

    $ sudo certbot install --cert-name <도메인 이름>

     

     

     

    마지막으로 보안 그룹에서 HTTP와 HTTPS를 모두 허용하는지 확인하고 요청을 날려보면 로그가 찍히는 것을 확인할 수 있습니다~

     

     

     

     

    감사합니다.

     

     

     

     

     


    [참고]

    https://snapcraft.io/docs/installing-snap-on-red-hat

    https://certbot.eff.org/instructions?ws=nginx&os=centosrhel7

Designed by Tistory.