ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [https] nginx로 간단하게 https 설정
    TIL 2024. 4. 16. 17:49

    https 설정 방법이 블로그글마다 너무 다양해서 골치아팠는데 

    내가 사용한 / 할 방법으로 정리

     

    와일드카드로 설정할 도메인의 ip를 가진 인스턴스가 없었기 때문에

    dns 레코드마다 개별 https 인증서를 발급하였음.

     

    시도하기전에 nginx는 stop 해야한다

    또, api서버의 경우에는 nginx sites-available의 default를 사용하고 있었다면 새로 파일을 만들어 enabled와 링크해서


    그럼 지금부터 갓피티가 알려준 방법


     

    네, certbot을 사용하여 Let's Encrypt SSL/TLS 인증서를 발급받는 과정을 자세히 안내해 드리겠습니다. 여기서는 Ubuntu Linux를 예로 들어 설명하겠습니다.

    1. certbot 설치

    Ubuntu에서 certbot을 설치하려면, 다음 단계를 따라야 합니다:

     

    1. 저장소 추가:

    sudo apt-get update
    sudo apt-get install software-properties-common
    sudo add-apt-repository universe
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update

     

    2. certbot 설치:

    sudo apt-get install certbot

    2. Nginx를 사용할 경우 certbot 이용

    sudo apt-get install python3-certbot-nginx
    sudo certbot --nginx -d example.com
    
    // 다른 url더 추가하려면 이런식으로
    // sudo certbot --nginx -d example.com -d www.example.com
    //  뒤에 -d 더 붙여가며 늘려도 됨.
    // 와일드카드는 *.example.com 으로 하면 됨

    3. 인증서 자동 갱신 설정

    certbot은 인증서를 자동으로 갱신하도록 크론 잡이나 systemd 타이머를 설치합니다. 이렇게 하면 인증서가 만료되기 전에 자동으로 갱신되어 인증서 만료로 인한 서비스 중단을 방지할 수 있습니다. 인증서 갱신이 제대로 설정되어 있는지 확인하려면 다음 명령을 실행해 보세요:

    sudo certbot renew --dry-run
    이 명령은 실제로 인증서를 갱신하지 않고, 갱신 절차를 시뮬레이션하여 설정이 올바르게 작동하는지 확인합니다.

    4. 인증서 확인 및 적용

    인증서가 발급된 후에는 /etc/letsencrypt/live/example.com/ 디렉토리에 위치한 fullchain.pem과 privkey.pem 파일을 웹 서버의 SSL/TLS 설정에 적용해야 합니다. 이 부분은 사용하는 웹 서버의 설정에 따라 달라집니다.

    이 과정을 통해 certbot을 사용하여 SSL/TLS 인증서를 성공적으로 설치하고 갱신할 수 있습니다. 언제든지 추가 도움이 필요하시면 말씀해 주세요!

     


     

    sudo certbot renew --dry-run

     

    으로 갱신시뮬레이션을 하면 nginx 프로세스가 실행되어 80, 443 포트를 잡아먹고 있는 경우가 있다.

     

    그럴떈 

    sudo lsof -i :80
    sudo lsof -i :443

    또는

     

    sudo netstat -tulpn | grep :80
    sudo netstat -tulpn | grep :443

    로 확인 후 있으면,

    id로 하나하나 kill 해도 되지만

     

    sudo killall nginx

    로 다 지워도 좋음

     

    그리고 

     

    이방식으로 할 경우에는 nginx의 sites-available에 위치한 설정 파일에

    80 -> 443 리다이렉트와

    ssl / tls 인증서도 자동으로 추가해주고,

    인증서 자동갱신도 알아서 추가해줌..

    엄청편함

     

    또,

    certbot의 인증서 자동갱신이 제대로 되어있는지 확인하는 방법

    sudo crontab -l
    sudo crontab -l -u root

    또는

    systemctl list-timers | grep certbot

    을 실행하여 항목이 있는지 확인.

     

    내 경우엔 systemctl ~로 확인했을때 나왔음

     

     

    그리고 웹페이지가 없는 api 서버의 경우에는

    nginx sites-available의 default 파일을 수정해서 쓰지 말고

    파일 하나 더 만들어서 enabled에 링크해서 쓰는 방식으로 해야함.

    default에 쓰면 하위 uri들은 404가 뜸

    (이유는 정확히 모르겠지만 default에는 root 웹페이지 지정하는 부분이 있기 때문에 웹페이지로부터 navigate 해야 정상 작동하고, 그냥 uri로 직통연결하는 api 서버 방식과는 구조가 안맞아서 그런듯함. 추측임)

    'TIL' 카테고리의 다른 글

    [IPv6] ENETUNREACH  (0) 2024.04.22
    [https] redirect  (0) 2024.04.17
    [Nest] 모듈 export  (0) 2024.04.01
    [.env] 환경변수 로드 순서  (0) 2024.03.26
    [Date] date 함수  (0) 2024.03.26
Designed by Tistory.