Ubuntu

[Ubuntu] https 설정하기 (Let's Encrypt 사용)

김호록님 2023. 5. 11. 15:43
sudo su

 

1. cerbot 설치

sudo apt-get update
sudo apt-get install certbot
sudo apt-get install python3-certbot-nginx

그리고 nginx를 잠시 멈춘다.

sudo systemctl stop nginx

 

2. 인증서 발급

sudo certbot certonly --manual -d "*.도메인" -d "도메인"

여기서 Enter 키를 누르기 전에 도메인을 구매한 사이트에서 레코드를 추가한다.

호스트 이름에는 _acme-challenge 를 적고 값에는 follwing value를 넣어준다. 설정이 완료되었으면 Enter키를 누른다.

 

기존 창과 다른 창으로 우분투에 접속 후 디폴트 파일에 들어간다.

vim /etc/nginx/sites-available/default

그리고 안에 location ~ /\.well-known/acme-challenge/ { ... } 부분을 추가한다.

설정이 끝났다면 nginx를 재가동한다.

sudo systemctl restart nginx
mkdir letsencrypt
cd letsencrypt
mkdir .well-known/
cd .well-known/
mkdir acme-challenge
cd acme-challenge

acme-challenge 폴더에서 모자이크 처리한 부분(위)을 이름으로 하는 파일을 생성 후 파일 내용에 url 뒤 쪽 모자이크 처리한 부분 (아래)을 내용으로 넣는다.

url으로 접속하여 잘 나오는지 확인 후 원래 쉘로 돌아가 Enter를 누른다.

인증서는 /etc/letsencrypt/live/'도메인'에 생성된다.

 

3. nginx 설정

디폴트 파일에 들어간다.

vim /etc/nginx/sites-available/default

아래에 새로운 서버 블록을 만들어준다.

server {
	listen [::]:443 ssl;
	listen 443 ssl;
	server_name www.[domain] [domain];

	ssl_certificate /etc/letsencrypt/live/'도메인'/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/'도메인'/privkey.pem;

	location / {
		proxy_pass http://localhost:8080; 
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Host $host;
		proxy_cache_bypass $http_upgrade;
	}

	location ~ /\.well-known/acme-challenge/ {
		default_type "text/plain";
		root /var/www/letsencrypt;
	}
}

포트 번호는 본인이 설정해둔 포트 번호로 설정하면 된다.

nginx 재시작 하면 https로 접속이 되는 것을 확인 할 수 있다.

sudo systemctl restart nginx