상세 컨텐츠

본문 제목

5. 서버 환경설정하기 (HTTPS 적용)

개발 공부 (시니어코딩)/서비스 서버 구축

by letprogramming 2024. 1. 2. 05:23

본문

반응형

배포할 서비스 서버에 https 를 적용해보자

 

먼저 준비할 것은 DNS(Domain Name Server) 주소이다.

 

도메인 주소란 예를 들어 www.naver.com  과 같이 해당 서버의 이름을 의미한다.

 

우리의 클라우드 서버는 현재 xx.xxx.xxx.xxx와 같이 IP 주소로 되어있다.

이 IP 주소에 이름을 붙여준 것이 도메인 주소라고 생각하면 된다.

 

HTTPS 서비스를 서버에 적용시키기 위해서는 도메인 주소가 필요하다.

 

도메인 주소는 실제로는 구독형 유료 서비스이다.

일정 금액을 일정 기간동안 지불하면서 해당 도메인 주소를 빌려서 사용하는 형식이다.

따라서 희귀하거나 대중적으로 인기있는 도메인은 사용료가 더 비싸지기도 하며,

같은 이름이라도 마지막에 붙은 .com / .net / .org 등에 따라서도 사용료가 천차만별이다.

 

국내의 대표적인 사이트는 가비아가 있다.

위와 같이 유료 사용이 어려운 경우에는 해외 사이트 중 무료로 도메인을 사용할 수 있는 사이트들도 있다.

나는 freenom 이란 사이트를 이용했다.

 

freenom은 뮤료라는 장점이 있지만 사이트가 빠르지 않아 소요 시간이 존재할 수 있다는 단점이 있다.

정상적으로 모든 설정을 했음에도 적용이 되지 않아 하루종일 잘못된 점을 찾았으나, 시간이 흘러 해결이 되었다.

알고보니 해당 도메인 주소 설정이 늦어진 것이었다. 주의가 필요하다.

 

원하는 도메인 주소를 freenom에서 검색해서 무료인 항목을 찾아 구입하면 된다.

구입 후에는 DNS 관리에 들어가 클라우드 서버의 public IP 와 DNS를 매핑 시켜준다.

 

도메인 설정은 이후에 다른 게시글에 포스팅하려고 한다.

 

도메인 설정이 끝났다면 리눅스에서 아래 명령어를 통해 확인할 수 있다.

정상적으로 설정했다면 해당 도메인 주소를 찾아 IP주소와 함께 출력될 것이다.

 

nslookup "도메인 주소"

 

또한 정상적으로 세팅이 되었다면 브라우저에 해당 "도메인 주소"로 접속이 가능하다.

 

HTTPS 무료 설정을 위해서 certbot(LetsEncrypt)를 설치해야한다.

 

certbot은 DNS 서버에서 해당 도메인 주소를 검색하여 해당 도메인에 HTTPS 보안 서비스를 적용해준다.

 

$ yum install certbot python2-certbot-nginx -y

 

$ systemctl stop nginx

 

$ certbot --standalone -d "도메인 주소" certonly

 

 certbot은 90일의 인증 유효기간이 있기 때문에 90일 전에 연장해야 한다.

반응형

이후에 nginx에 HTTPS config 설정을 해야한다.

아래 nginx conf 설정은 아래 유튜브 영상에서 가져왔다.

큰 따옴표 부분은 사용자 임의 설정 부분이기 때문에 본인의 nginx 설정에 따라 수정하길 바란다.

https://www.youtube.com/watch?v=s788gZ-cNj8

 

nginx/conf.d/.conf

server {
listen 80;
server_name "도메인 주소";

location / {
         root   /var/www/" ";
        index  index.html;
         try_files $uri /index.html;
        }

        return      301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name "도메인 주소";

    ssl_certificate /etc/letsencrypt/live/"도메인 주소"/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/"도메인 주소"/privkey.pem;

    location / {
        root   /var/www/" ";
        index  index.html;
        try_files $uri /index.html;
    }

}

 

이후에는 90일 이전에 인증서 갱신을 자동화하려고 한다.

갱신은 클라우드에서 아래 명령어만 90일이 되기 전에 입력되면 되지만,

이를 직접하기에는 번거롭기 때문에 crontab 을 이용해 이를 자동으로 입력되도록 한다.

 

$ certbot renew

 

crontab이란 리눅스의 스케줄링 프로그램이다.

 

사용자가 원하는 주기에 원하는 명령어를 실행시킬 수 있다.

 

crontab 에 대한 포스팅은 추후에 별도로 할 예정이다.

 

crontab 에서 위 certbot renew 를 주기적으로 입력되도록 설정하면 https 설정은 문제없다.

 

반응형

관련글 더보기