[muzip] SSL 자동갱신

Seunghyeon·2025년 3월 11일
0

muzip

목록 보기
1/1

certbot을 사용하여 webroot 방식을 통해 SSL 자동 갱신 설정하기.


시작하기에 앞서
1. 나는 현재 docker-compose로 프론트 백 같이 빌드하고 있고,
2. nginx에서 사용할 default.conf 파일은 마운트 된 상태이다.
3. nginx는 컨테이너로 관리하고 있다.


아래의 4개를 신경써서 해야한다.

  • 도커 볼륨 마운트
  • nginx의 .conf 파일
  • certbot 명령어
  • crontab 설정

나는 이거 설정해주는데 몇 시간을 날렸는데
경로 설정, 명령어 경로 설정, 디렉토리 이름 설정 이런 부분에서 한 걸음 나갈때마다 막혔다...

webroot?


요약하자면, certbot을 계속 돌려둘 필요 없이 + 서비스의 중단 없이 ssl 인증을 자동으로 갱신할 수 있는 방법이다.

1. certbot 설치

sudo apt update
sudo apt install certbot

설치하고 확인하기

certbot --version

2. 인증서 받기 위한 설정

Let'sEncrypt가 도메인 소유권을 확인하기 위해서

http://muzip.store/.well-known/acme-challenge/

이 주소에 인증 파일이 있나 없나 확인한다.

webroot 방식은 해당 주소에 인증 파일을 올려서 검증받는 방식이다.

그렇기에 Let'sEncrypt에서 접속할 수 있도록 default.conf 설정을 아래와 같이 해준다.

server {
    listen 80;
    server_name example.com;

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
        allow all;
    }
}

여기서 경로 이름이 중요한지 모르겠지만 gpt는 /var/www/html 으로 하라고 했다가 /var/www/cerbot으로 하라고 했다가 그러길래 둘다 해봤는데 certbot으로 했을 때 동작했다.

경로가 영향을 미치는건지는 잘 모르겠음..

그다음

docker-compose.yml 에서 프론트 컨테이너(nginx)의 볼륨 마운트 부분이다.

위에서 사용한 경로와 리눅스 호스트에서 인증서 확인에 필요한 디렉토리를 연결을 해 줘야한다.

또한 여기서 /home/ubuntu/certbot-webroot 디렉토리 안에 .well-known/acme-challenge/ 이 디렉토리 까지 같이 만들어 놓는다

그 후에 chmod -R 755 /path/to/certbot-webroot로 권한 부여 까지 해주기


3. Certbot으로 인증서 발급

sudo certbot certonly --webroot -w /home/ubuntu/certbot-webroot -d muzip.store

여기서는 명령어를 잘 확인해야 한다.

-w 뒤에는 자신이 만들어둔 디렉토리로 설정해주고 -d 뒤에는 자신의 도메인을 넣어준다.

해당 도메인의 소유권을 검증받기 위해 우리의 도메인 주소를 넣는다.

명령어를 넣으면 인증서가 발급될 것이다.

여기서!! 저 디렉토리 안에 뭐가 생기는건 아니다!

명령어를 실행하면 certbot이 해당 디렉토리 안에 인증을 위한 파일을 넣고 Let'sEncrypt가 그 파일을 확인하기 위해 우리 서버에 접속 후 확인이 되면 인증서를 발급하면서 저 certbot-webroot 디렉토리 안에 파일을 삭제한다.

그래서 우리 눈에는 아무것도 안보임

4. crontab 으로 자동화

crontab을 통해 알아서 갱신되도록 하기 전에

sudo certbot renew --dry-run 을 통해
인증서가 갱신되는지 확인한다.

인증서가 갱신이 되는걸 확인했으면

sudo crontab -e 을 통해 스케쥴러 편집창을 열고

0 3 * * * certbot renew --quiet && docker exec muzipfront nginx -s reload
새벽 3시에 인증서를 갱신하고 muzipfront 컨테이너에서 nginx 설정을 다시 reload 하라는 명령을 넣어준다.


일단 이렇게 설정을 해뒀으니 되는지 안되는지는 3달 후에 알 수 있지 않을까? ㅋㅋ;;

현재 인증서는 갱신했기 때문에 끝!

profile
그냥 합니다.

0개의 댓글