도메인 주소 발급
먼저 ssl 인증서를 발급 받기 위해선 도메인 주소를 얻어야 합니다.
무료로는 freenom (https://www.freenom.com/) 을 추천드리고, 유료는 AWS Route 53을 추천드립니다.
(왜냐면 제가 두 곳만 써봤습니당.하하)
Let's Encrypt 인증서 발급
도메인 주소를 받았으면 배포한 서버에 접속해서 아래와 같이 입력합니다.
도메인 주소라고 적힌 부분에는 본인의 도메인 주소를 넣어주면 됩니다. ex) ziho.com
docker run -it --rm --name certbot \
-v '/etc/letsencrypt:/etc/letsencrypt' \
-v '/var/lib/letsencrypt:/var/lib/letsencrypt' \
certbot/certbot certonly -d '도메인 주소' --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
(도커를 사용하기 때문에, 서버에 도커가 설치되어 있어야 합니다.)
위의 명령어를 입력하면 아래와 같이 DNS 레코드를 입력하라는 문구가 뜹니다.
DNS 레코드 입력
예시로는 freenom 사이트를 사용했기에 freenom 기준으로 보여드리겠습니다.
Name에 _acme 부분을 넣고 Type에는 TXT, Target은 문구에서 제시해준 값을 넣어줍니다.
(사진에선 A type을 TXT로 안고쳤는데, TXT로 진행했습니다.)
터미널에서 아래 명령어를 통해 DNS 설정이 적용되었는지 확인합니다. freenom은 이 과정에서 시간이 몇 분 걸립니다.
(aws는 유료라 그런지 1분 미만으로 설정이 적용됩니다.)
nslookup -type=txt _acme-challenge.도메인 주소
그리고 확인이 된 후에는 서버로 돌아가서 엔터를 눌러줍니다!
그러면 ssl 인증서 발급이 완료됩니다.
경로는 아래와 같습니다.
/etc/letsencrypt/live/도메인 주소/fullchain.pem; # managed by Certbot
/etc/letsencrypt/live/도메인 주소/privkey.pem; # managed by Certbot
발급받은 ssl 인증서를 nginx를 통해 적용하기
/etc/nginx/sites-available/프로젝트.conf 파일을 생성합니다.
그 다음엔 sites-available 폴더의 파일을 sites-enabled에 연결해서 생성시켜줍니다.
sudo ln -s /etc/nginx/sites-available/프로젝트.conf /etc/nginx/sites-enabled
sites-available 폴더에서 생성한 conf 파일을 수정하면, enabled 폴더의 파일도 수정이 됩니다.
그리고 아래와 같이 작성해줍니다.
설명을 드리면, http로 접속하면 https로 Redirect되게 적용했고,
https 부분에서 ssl을 연결시켜주었습니다.
server {
server_name 도메인주소 www.도메인주소;
return 301 https://도메인주소$request_uri;
}
server {
listen 443 ssl;
server_name 도메인주소;
ssl_certificate /etc/letsencrypt/live/도메인주소/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/도메인주소/privkey.pem; # managed by Certbot
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8001;
proxy_redirect off;
}
}
댓글