본문 바로가기
프로그래밍/server

Ubuntu 서버에 Nginx, Certbot 사용해서 SSL 연결하기

by 한코코 2022. 5. 20.

1. Nginx(엔진엑스) 설치 (공식 사이트)

Nginx란?

경량 웹 서버로서 클라이언트로부터 요청을 받았을대 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용된다.

또한 Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 한다.

 

 

1. 우분투 레포지토리 정보를 업데이트 해준다.

$ sudo apt-get update

 

2. 패키지를 설치한다.

$ sudo apt-get install nginx

 

3. 설치되었는지 확인한다.

$ sudo nginx -v

nginx 버젼이 출력되어야한다.

 

 

 

 

 


2. Cerbot 설치 & 시작 (공식 사이트)

Certbot은 

  • 수동으로 관리되는 웹사이트에서
  • Let's Encrypt 인증서(SSL certificates)를 자동으로 사용하여
  • HTTPS를 활성화해주는 오픈소스 소프트웨어 도구다. 

공식사이트가 예전에는 직접 설치하는 방법을 권했지만 최근엔 snap을 통해서 설치하는 것을 추천하고 있다.

 

인증서란?
공개키 = Public Key = SSL certificate = 디지털 인증서
클라이언트 프로그램과 암호화된 SSL(secure socket layer) 또는TLS(transport layer security) 접속 간에 안전한 보안 통신이 가능하도록 공개키와 개인키를 사용한다. 인증서는 초기 통신 단계(보안키 교환) 암호화를 위해, 서버를 식별하기 위해 사용된다.

 

SSL(Secure Sockets Layer)이란?

SSL은 암호화 기반 보안 프로토콜이다. 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 Netscape가 처음으로 개발했으며, 현재는 SSL보다 발전한 TLS(Transport Layer Security)를 사용하고 있다.

 

 

1. 서버 IP에 도메인을 연결해서 80번 포트로 http 통신이 가능한 상태여야 함.

2. snapd 설치하기

우분투 18.04 버전 이상은 이미 Snap이 설치되어있다고하니 별도로 설치할 필요가 없다.

# 다음 코드로 설치유무를 확인해보기
$ lsb_release -a

그 이전 버전의 우분투를 사용하고있는 사람에게 공식사이트가 제공하는 링크들

 

3. snapd이 최신 버전인지 확인하기

$ sudo snap install core; sudo snap refresh core

 

4. certbot-auto와 모든 Certbot OS 패키지를 제거

'apt', 'dnf' 또는 'yum'과 같은 OS 패키지 관리자를 사용하여 설치된 Certbot 패키지가 있는 경우 'certbot' 명령을 실행할 때 스냅이 사용되도록 Certbot 스냅을 설치하기 전에 패키지를 제거해야 한다.

$ sudo apt-get remove certbot
$ sudo dnf remove certbot
$ sudo yum remove certbot

 

5. Certbot 설치

$ sudo snap install --classic certbot

 

6. Certbot 명령 준비

Certbot이 실행할 준비가 되어있는지 다음 코드로 확인한다.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

7-1. 인증서를 가져와서 설치하기

다음 명령으로 인증서를 받고 Certbot이 자동으로 nginx 구성을 편집하고 제공하여 한번에 HTTPS 액세스를 켭니다.

$ sudo certbot --nginx

7-2. 인증서를 얻기

nginx 구성을 수동으로 변경하고 싶다면 다음 명령을 실행하자.

$ sudo certbot certonly --nginx

 

8. 자동 갱신 테스트

시스템의 Certbot 패키지는 인증서가 만료되기 전에 자동으로 갱신되는 cron 작업 또는 시스템 타이머와 함께 제공된다.

구성을 변경하지 않는 한 Certbot을 다시 실행할 필요가 없다. 인증서 자동 갱신을 테스트 할 수 있다.

$ sudo certbot renew --dry-run

다음의 장소 중 한 곳에 저장되어있다.

  • /etc/crontab/
  • /etc/cron.*/*
  • systemctl list-timers

 

9. Certbot이 제대로 작동하고 있는지 확인하기

사이트가 제대로 설정되었는지 확인하려면 구동되고 있는 내 사이트에서 URL창에 자물쇠 아이콘이 있는지 확인하면 된다.

 

 

 

 

 

 

 


3. Nginx에 SSL 연결하기 (참고 블로그)

이 안에 서버 블록이 있다.

  • /etc/nginx/sites-available/default
  • /etc/nginx/sites-enabled/default
$ sudo vi default

관리자 모드로 서버 블록을 열어서 다음 내용처럼 수정해줘야한다.

server {
    listen 80;
    server_name 접속할_도메인.com

    location / {
       proxy_pass http://127.0.0.1:3000;
    }
}

 

수정이 끝난 후에 nginx를 실행중지를 시키고 다시 시작한다.

$ sudo service nginx stop
$ sudo service nginx start

nginx를 다시 실행시키면 연결되어있던 Certbot이 자동으로 뒷내용들을 채워준다.

 

 

 

이 상태에서 도메인이 연결되었다면 nginx가 무사히 실행된 것이다.

댓글