Study/cloud

EC2에 CertBot와 NginX를 사용하여 https, 도메인 연결 + 자동갱신

hongeeii 2025. 4. 21.
728x90
반응형

 

https://hongs-coding.tistory.com/267

 

[aws] ec2 기본 세팅(프리티어)

1. quick-start- Amazon Linux 2023 AMI- 아키텍처 64비트(ARM) ⇒ default가 x64라 바꿔줘야함, ARM이 성능상 우위- ARM으로 하려했으나, 프리티어인 t2 micro는 ARM선택 불가…- 인스턴스 유형: t2 micro- pem 키 발급- 네

hongs-coding.tistory.com

위 글에서 nginx와 ec2 기본세팅은 다 되었다고 칩니다.

 

CertBot

Certbot 설치
 1. sudo dnf install -y certbot python3-certbot-nginx
 // 인증서 발급 및 자동 설정
 2. sudo certbot --nginx -d {등록하려는 도메인}
 2-1. 이메일 입력
 2-2. 나머지 yes로 동의


nginx에 서버이름 먼저 등록
1. cd /etc/nginx/conf.d
2. sudo vi default.conf

server {
    listen 443 ssl;
    server_name {도메인명};

    location / {
        proxy_pass http://127.0.0.1:8080; # 스프링부트 포트
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }

    # 아래 부분은 Let's encrypt를 통해 SSL 인증을 받은 키를 사용한다.
    ssl_certificate /etc/letsencrypt/live/{도메인명}/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/{도메인명}/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# http로 들어온 요청은 https로 리다이렉트 되도록 설정한다.
server {
    listen 80;
    server_name {도메인명};
    location / {
        return 301 https://{도메인명}$request_uri;
    }
}


설정 테스트 후 재시작
    - sudo nginx -t
    - sudo systemctl reload nginx

인증서 갱신 시 자동 적용
    - cron 설치
        - sudo yum install cronie -y
        - sudo systemctl enable crond
        - sudo systemctl start crond
    - cron 등록
        - sudo crontab -e
            - 0 3 * * * certbot renew --quiet && systemctl reload nginx
        - 매일 새벽 3시에 인증서가 갱신되고, 자동으로 Nginx가 reload

728x90
반응형

추천 글