본문 바로가기
IT(인터넷) 관련/서버 관련

Ubuntu에서 Nginx + Certbot 이용하여 Let's Encrypt SSL 인증서 발급받는 방법

by 광토리 2022. 11. 19.
728x90

안녕하세요, 광토리입니다.

요즘 https가 필수가 되고 있는데요, Certbot을 이용해서 간단하게 Let's Encrypt SSL 인증서를 발급받는 방법을 알아보도록 할게요.

바로 시작합니다!


시작하기 전!

sudo apt update
sudo apt upgrade

apt 패키지를 업데이트하지 않았다면, 업데이트해주세요.

sudo apt install nginx

Nginx를 설치하지 않으셨다면, 설치해 주세요.


NGINX 라우팅 파일 만들기

cd /etc/nginx/sites-available/

Nginx 폴더의 sites-available로 이동해 주세요.

sudo vi info.gwangtori.com

 

관리자 권한으로 https를 적용할 사이트 파일을 편집해 줍시다.

'i'를 눌러 편집 모드로 바꿔 주신 후,

server {
	server_name info.gwangtori.com;
    
    location / {
      root /var/www/html/static/;
      index index.html;
    }
}

해당 도메인으로 요청이 들어오면 어떻게 처리할지, 코드를 적어주세요. 위에 예시는 info.gwangtori.com으로 요청이 들어오면 /var/www/html/static/로 이동시켜주겠다는 코드입니다.

 

다 작성하셨다면, ESC를 누르고, :wq를 쳐서 저장하고 나와줍니다.

sudo ln -s /etc/nginx/sites-available/info.gwangtori.com /etc/nginx/sites-enabled/info.gwangtori.com

다음 명령어로 서버와 연결시켜 주세요.

sudo nginx -t
>> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
>> nginx: configuration file /etc/nginx/nginx.conf test is successful

다음 명령어로 라우팅 파일이 잘 작동하는지 확인해 주세요. 위와 같이 나오면 성공입니다!

sudo service nginx restart

성공하셨으면, Nginx를 다시 시작시켜서 적용시켜 주세요.


도메인 연결하기

도메인 DNS를 서버와 연결해 주세요. 저는 A 형식으로 IPv4로 연결해줬습니다. DNS 설정은 디자인만 다르기 때문에 따로 설명하지 않을게요.


Certbot 설치하기

sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

다음 명령어들로 Certbot을 설치해 줍니다.

sudo certbot --nginx
>> We recommend selecting either all domains, or all domains in a VirtualHost/server block.
>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>> 1: info.gwangtori.com
>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>> Select the appropriate numbers separated by commas and/or spaces, or leave input
>> blank to select all options shown (Enter 'c' to cancel): 1

다음 명령어를 치면, nginx의 연결된 도메인들이 나오게 됩니다. 저는 info.gwangtori.com 사이트의 인증서를 발급받을 것이기 때문에 1번을 쳐줄게요.

Requesting a certificate for info.gwangtori.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/info.gwangtori.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/info.gwangtori.com/privkey.pem
This certificate expires on 2023-02-04.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for solla.wiki to /etc/nginx/sites-enabled/info.gwangtori.com
Congratulations! You have successfully enabled HTTPS on https://info.gwangtori.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Congratulations! 가 나오면 성공한 거예요. 한번 접속해 보세요!


실패하셨나요?

상위 도메인 1개당 1주에 50번까지, 한 도메인은 5번 횟수 제한이 존재합니다. 따라서 kro.kr 같이 하위 도메인을 무료로 쓸 수 있는 서비스를 사용하신다면, 횟수 제한에 걸렸을 확률이 높습니다. 


 

성공했네요! 덤으로 Certbot이 http2 설정에 http → https 리다이렉트까지 해주니, 편하게 쓰시면 됩니다!


자동 갱신 테스트

sudo certbot renew --dry-run

Let's Encrypt SSL 인증서 특성상, 유효 기간이 90일로 짧아요. 따라서 Certbot에 자동 갱신 기능도 들어가 있는데요, 테스트는 위의 명령어로 사용 가능해요.

반응형

댓글