← 전체로 돌아가기
스킬 web-server

NGINX Let's Encrypt HTTPS

NGINX에 Let's Encrypt로 HTTPS 붙이기, 자동 갱신까지.

httpsnginxlets-encryptcertbotssl

NGINX Let's Encrypt HTTPS 설정

NGINX 설치 및 기본 설정

sudo apt update
sudo apt install nginx -y

NGINX 설치 끝.

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

브라우저에서 서버 IP 치면 NGINX 기본 페이지 보이면 됨.

방화벽 설정

sudo ufw allow 'Nginx Full'
sudo ufw enable

도메인 연결

도메인 DNS 설정에서 A 레코드를 서버 퍼블릭 IP로 연결.

Let's Encrypt 설치

Certbot 설치

sudo apt install certbot python3-certbot-nginx -y

HTTPS 인증서 생성

sudo certbot --nginx -d [your_domain]
  • 내 경우: sudo certbot --nginx -d ec2seoul.flaresolution.com 이메일 입력, 약관 동의. 도메인 DNS 맞으면 인증서 발급됨.

NGINX HTTPS 설정

Certbot이 NGINX 설정 파일 자동 업데이트, HTTPS 활성화. 설정 파일은 /etc/nginx/sites-available/[your_domain]에 저장됨.

변경 사항 확인:

sudo nginx -t

적용:

sudo systemctl reload nginx

HTTPS 연결 테스트

브라우저에서 https://[your_domain] 접속, HTTPS 활성화 확인.

SSL 인증서 자동 갱신

Let's Encrypt 인증서 90일 유효. 자동 갱신 필요.

갱신 테스트:

sudo certbot renew --dry-run

성공하면 자동 갱신 작동 중.

크론잡 설정 Certbot 설치 시 기본 크론 작업 생성됨. 별도 설정 건너뜀.

여기서 배울 것

  1. NGINX 설치/실행, 방화벽 설정 기본.
  2. 도메인 A 레코드 설정 중요.
  3. Certbot으로 Let's Encrypt 인증서 발급, NGINX 자동 설정.
  4. SSL 인증서 90일 유효, `certbot renew --dry-run`으로 갱신 테스트.
원본 파일 보기 (.claude/skills/tn-https-lets-encrypt-nginx/SKILL.md)
---
name: NGINX Let's Encrypt HTTPS 설정
description: This skill should be used when the user asks to set up HTTPS for a website using NGINX and Let's Encrypt, including installing NGINX, configuring DNS, obtaining SSL certificates, and setting up automatic renewal.
version: 1.0.0
source: /home/son/prj/resume/backup_notes_260317/notion/Tech Note/HTTPS (let’s encrypt, nginx) 2ddd7efd824b80379feadb5a9897d580.md
---

# HTTPS (let’s encrypt, nginx)

**HTTPS**

let's encrypt, nginx

### 1. **NGINX 설치 및 기본 설정**

1. **NGINX 설치**:
    
    ```bash
    sudo apt update
    sudo apt install nginx -y
    ```
    
2. **NGINX 실행 확인**:
    
    ```bash
    sudo systemctl start nginx
    sudo systemctl enable nginx
    sudo systemctl status nginx
    ```
    
    브라우저에서 서버의 IP 주소를 입력하면 NGINX 기본 페이지가 보여야 합니다.
    
3. **방화벽 설정**:
    
    ```bash
    sudo ufw allow 'Nginx Full'
    sudo ufw enable
    
    ```
    

---

### 2. **도메인 이름 연결**

- 도메인 이름을 서버의 퍼블릭 IP 주소에 연결합니다.
- 도메인의 DNS 설정에서 `A 레코드`를 서버 IP로 설정하세요.
    
    ![Screenshot 2024-12-23 at 9.40.20 PM.png](HTTPS%20(let%E2%80%99s%20encrypt,%20nginx)/Screenshot_2024-12-23_at_9.40.20_PM.png)
    

---

### . **Let's Encrypt 설치**

1. **Certbot 설치**:
    
    ```bash
    sudo apt install certbot python3-certbot-nginx -y
    ```
    
2. **HTTPS 인증서 생성**:
아래 명령으로 도메인에 대한 인증서를 발급합니다:
    
    ```bash
    sudo certbot --nginx -d your_domain
    
    in my case
    sudo certbot --nginx -d ec2seoul.flaresolution.com
    ```
    
    `your_domain`을 실제 도메인으로 변경하세요.
    
3. **이메일 입력 및 약관 동의**:
    - 이메일 주소를 입력하고 Let's Encrypt 약관에 동의하세요.
    - 도메인의 DNS 설정이 올바르다면 인증이 진행되고 인증서가 발급됩니다.

---

### 4. **NGINX HTTPS 설정**

- Certbot이 NGINX 설정 파일을 자동으로 업데이트하여 HTTPS를 활성화합니다.
- 설정 파일은 `/etc/nginx/sites-available/your_domain`에 저장됩니다.
- 변경 사항이 적용되었는지 확인:
    
    ```bash
    sudo nginx -t
    sudo systemctl reload nginx
    ```
    

---

### 5. **HTTPS 연결 테스트**

- 브라우저에서 `https://your_domain`으로 접속하여 HTTPS가 활성화되었는지 확인하세요.

---

### 6. **SSL 인증서 자동 갱신 설정**

Let's Encrypt 인증서는 90일간 유효합니다. 자동 갱신 설정을 추가하세요:

1. **갱신 테스트**:
    
    ```bash
    sudo certbot renew --dry-run
    ```
    
    성공하면 자동 갱신이 작동하고 있습니다.
    
2. **크론잡 설정**:
Certbot 설치 시 기본적으로 크론 작업이 생성되므로 별도의 설정은 필요하지 않습니다.

---