ssl 간단하게 붙이는 법 (with. docker)

최준호·2023년 12월 3일
0

Appling

목록 보기
11/12
post-thumbnail

참고 오솔길 nginx 설정하기

🟢 docker-compse.yml 파일 수정

services:
  nginx:
    container_name: nginx
    image: nginx:1.22.1-alpine
    restart: always
    ports:
      - 80:80
    volumes:
      - /etc/letsencrypt:/etc/letsencrypt
      - /var/lib/letsencrypt:/var/lib/letsencrypt
      - ${DOCKER_COMPOSE_ROOT}/nginx/sites.conf:/etc/nginx/conf.d/sites.conf
      - ${DOCKER_COMPOSE_ROOT}/nginx/sites-enabled:/etc/nginx/sites-enabled

🟢 nginx.conf 파일 수정

server {
  listen 80;
  server_name userdomain.com;
  location / {
    rewrite ^ https://$server_name$request_uri? permanent;
  }
  location /.well-known/acme-challenge {
    root /var/lib/letsencrypt/;
  }
}

🟢 인증서 발급

docker run -it --rm --name certbot \
            -v "/etc/letsencrypt:/etc/letsencrypt" \
            -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
            certbot/certbot \
            certonly \
            --webroot \
            -w /var/lib/letsencrypt \
            -d {userdomain.com} \
            --agree-tos

userdomain.com은 수정해주어야 한다.

또한 메일 정보를 입력하라고 하는데 해당 내용을 입력하면 정상적으로 종료된다.

🟢 nginx.conf 재수정

server {
  listen 80;
  server_name userdomain.com;
  location / {
    rewrite ^ https://$server_name$request_uri? permanent;
  }
}

server {
   listen 443 ssl;
   server_name userdomain.com;
   location / {
       proxy_pass my-server:3000;
   }

   ssl_certificate /etc/letsencrypt/live/userdomain.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/userdomain.com/privkey.pem;
}

ssl 인증 파일로 ssl이 적용되도록 수정해준다.

이렇게 하면 모든 ssl 적용이 종료된다. 생각보다 금방 끝나지만 네트워크 문제나 이런 저런것들을 신경쓰면 오래걸릴 수도 있다.

🟢 재발급

docker run --rm --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot renew

재발급을 위한 스크립트인데

자동화 하기 위해서는

crontab -e
0 5 5,15,25 * * /usr/bin/docker run --rm --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot renew >> /var/log/certbot_renew.log

매월 스크립트를 1일, 15일, 25일 5시에 재발급 해주는 스크립트를 작성할 수 있다.

10 5 5,15,25 * * /usr/bin/docker restart {container-nginx}

그리고 nginx를 재실행주는 크롭탭도 추가해주면 자동으로 계속해서 재발급을 진행할 수 있다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글