본문 바로가기
TIL(Today I Learned)

2024.10.13 Today I Learned

by 승환파크 2024. 10. 13.

최종 프로젝트에서 서버를 직접 구축한 이후 aws 에 띄워놓고 접근을 하는데 https 가 아니라 swift 에서 접근을 허용하지 않아서 ssl 인증서를 직접 발급받아 https 로 사용하기로 했다.

일단 이 순서를 진행하기 전에 도메인을 발급받은 이후 aws 의 route53과 연결을 해둔 상태여야 한다.

1. Certbot 설치 및 SSL 인증서 발급

sudo apt update
sudo apt install certbot
sudo apt install python3-certbot-nginx

 

우선 aws 에서 사용중인 인스턴스에 ssh 로 연결을 한 이후 명령어를 통해 certbot 과 nginx 를 설치한다.

 

2. Nginx 설치 (Spring Boot 프록시 설정용)

sudo apt install nginx

 

사용자가 만약 80번포트(http)로 접근을 하게 되면 443포트(https)로 리다이랙션되도록 설정하기 위한 nginx 를 설치한다.

 

3. nginx 서버 설정

sudo nano /etc/nginx/sites-available/default

 

nginx 기본 설정 파일로 접근해 아래와 같이 작성한다.

server {
    listen 80;
    server_name your-domain.com;  # 가비아에서 받은 도메인

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

 

위 처럼 작성을 했다면 저장 이후 아래명령어를 사용해 테스트를 진행한다. 테스트에 문제가 없다면 nginx 를 재실행 시켜준다.

sudo nginx -t
sudo systemctl restart nginx

 

3. SSL 인증서 발급하기

sudo certbot --nginx -d your-domain.com <- 실제 자기 도메인 주소

 

CertBot 을 사용해 자동으로 ssl 인증서를 발급 받는다.

 

3-1. 만약 SSL 인증서가 잘 발행되었지만 접근을 못하는 경우 아래와 같이 내용이 비슷한지 확인한다.

server {
    # HTTP 요청을 HTTPS로 리다이렉션
    if ($host = (도메인 이름)) {
        return 301 https://$host$request_uri;
    }

    listen 80;
    listen [::]:80;

    server_name (도메인 이름);
    return 404;  # 이 부분은 Certbot이 관리하며, HTTP 요청에 대해 리다이렉션을 처리합니다.
}

server {
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;

    server_name (도메인 이름);

    # SSL 인증서 설정 (Certbot이 관리)
    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;

    location / {
        proxy_pass http://localhost:8888;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

 

이후 다시 진행하면 문제없이 접근할 수 있는 것을 확인할 수 있다.

 

ps. 이랬는데도 접근하는데 시간이 오래걸린다 등등 문제가 발생하면 방화벽 설정도 꼭 확인하길...

방화벽 문제인줄 모르고 접근하다 계속 실패했슴...

sudo ufw status

 

방화벽에서 80번 포트와 443 포트로 접근이 가능한지 꼭 확인하기..

'TIL(Today I Learned)' 카테고리의 다른 글

2024.12.19 Today I Learned  (2) 2024.12.19
2024.12.17 Today I Learned  (3) 2024.12.17
2024.09.25 Today I Learned  (0) 2024.09.25
Today I Learned 2024.09.03  (2) 2024.09.03
2024.08.01 Today I Learned  (1) 2024.08.01