최종 프로젝트에서 서버를 직접 구축한 이후 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 |