Let’s Encrypt 인증서로 NGINX SSL 설정하기
nginx ssl 설정에는 SSL/TLS 인증서가 필요합니다. 이 모범 사례에서는 Let’s Encrypt 클라이언트를 사용하여 인증서를 생성하는 방법과 이를 사용하도록 NGINX OSS 및 NGINX Plus를 사용하여 자동으로 구성하는 방법을 다룹니다
웹사이트의 SSL/TLS 암호화가 검색 순위를 높이고 사용자의 보안을 강화한다는 것은 잘 알려져 있습니다.
가장 큰 장벽 중 두 가지는 인증서 취득과 관련된 비용과 수동 프로세스였습니다. 그러나 이제 Let’s Encrypt를 사용하면 더 이상 문제가 되지 않습니다. Let’s Encrypt는 SSL/TLS 암호화를 모든 사람이 무료로 사용할 수 있도록 합니다.
Let’s Encrypt는 자동화된 무료 개방형 인증 기관(CA)입니다. SSL/TLS 인증서를 무료로 제공합니다. Let’s Encrypt에서 발급한 인증서는 Windows XP SP3의 Internet Explorer와 같은 구형 브라우저를 포함하여 오늘날 대부분의 브라우저에서 신뢰됩니다. 또한 Let’s Encrypt는 인증서 발급 및 갱신을 모두 자동화합니다.
목차
1. Let’s Encrypt 작동 원리
2. 전제 조건
2-1. Let’s Encrypt 클라이언트 다운로드
2-2. NGINX SSL 설정
2-3. SSL/TLS 인증서 받기
2-4. Let’s Encrypt 인증서 자동 갱신
3. 요약
1. Let’s Encrypt 작동 원리
인증서를 발급하기 전에 Let’s Encrypt는 도메인 소유권을 확인합니다. 호스트에서 실행되는 Let’s Encrypt 클라이언트는 필요한 정보가 포함된 임시 파일(토큰)을 생성합니다. 그런 다음 Let’s Encrypt 유효성 검사 서버는 HTTP 요청을 만들어 파일을 검색하고 토큰의 유효성을 검사합니다. 그러면 도메인의 DNS 레코드가 Let’s Encrypt 클라이언트를 실행하는 서버로 확인되는지 확인합니다.
2. 전제 조건
Let’s Encrypt를 시작하기 전에 다음을 수행해야 합니다.
- NGINX 또는 NGINX Plus가 설치되어 있어야 합니다.
- 인증서에 대해 등록된 도메인 이름을 소유하거나 제어합니다. 등록된 도메인 이름이 없는 경우 GoDaddy 또는 dnsexit 와 같은 도메인 이름 등록 기관을 사용할 수 있습니다 .
- 도메인 이름과 서버의 공용 IP 주소를 연결하는 DNS 레코드를 만듭니다.
이제 NGINX 오픈소스 또는 NGINX Plus를 사용하여 Let’s Encrypt를 쉽게 설정할 수 있습니다 .
참고 : 이 모범사례에 설명된 절차는 Ubuntu 16.04(Xenial)에 대해 테스트했습니다.
2-1. Let’s Encrypt 클라이언트 다운로드
먼저 Let’s Encrypt 클라이언트를 다운로드합니다 certbot
.
위에서 언급했듯이 Ubuntu 16.04에 대한 지침을 테스트했으며 해당 플랫폼에 대한 적절한 명령은 다음과 같습니다.
$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python-certbot-nginx
Ubuntu 18.04 이상에서는 Python 3 버전을 대체합니다.
$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python3-certbot-nginx
2-2. NGINX SSL 설정
certbot
SSL/TLS용 NGINX를 자동으로 구성할 수 있습니다. 인증서를 요청하는 도메인 이름이 server 지시문이 포함된 NGINX 구성에서 블록을 찾고 수정합니다 . server_name
이 예에서 도메인은 http://www.example.com 입니다.
- NGINX를 새로 설치한다고 가정하고 텍스트 편집기를 사용하여 /etc/nginx/conf.d 디렉토리 에 domain‑name .conf 라는 파일을 만듭니다 (이 예에서는 http://www.example.com.conf ) . .
- 다음
server_name
지시문을 사용하여 도메인 이름(및 변형이 있는 경우)을 지정합니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
}
3. 파일을 저장한 다음 이 명령을 실행하여 구성 구문을 확인하고 NGINX를 다시 시작합니다.
2-3. SSL/TLS 인증서 받기
NGINX 플러그인은 NGINX certbot
를 재구성하고 필요할 때마다 해당 구성을 다시 로드합니다.
- 다음 명령을 실행하여 NGINX 플러그인으로 인증서를 생성합니다.
$ sudo certbot --nginx -d example.com -d www.example.com
2. certbot이메일 주소를 입력하고 Let’s Encrypt 서비스 약관에 동의하는 것을 포함하여 HTTPS 설정을 구성 하라는 메시지에 응답합니다 .
인증서 생성이 완료되면 NGINX가 새 설정으로 다시 로드됩니다. certbot인증서 생성에 성공했으며 서버에서 인증서 위치를 지정하는 메시지를 생성합니다.
Congratulations! You have successfully enabled https://example.com and https://www.example.com
-------------------------------------------------------------------------------------
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com//privkey.pem
Your cert will expire on 2017-12-12.
참고 : Let’s Encrypt 인증서는 90일 후에 만료됩니다.
domain‑name.conf 를 보면 다음과 certbot
같이 수정 되었음을 알 수 있습니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
listen 443 ssl; # managed by Certbot
# RSA certificate
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# Redirect non-https traffic to https
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
}
2-4. Let’s Encrypt 인증서 자동 갱신
Let’s Encrypt 인증서는 90일 후에 만료됩니다. 인증서를 자동으로 갱신하는 것이 좋습니다. 여기에서 이를 cron
수행하기 위해 기존 crontab 파일에 작업을 추가합니다.
- crontab 파일을 엽니다.
$ crontab -e
2. certbot
매일 실행할 명령을 추가합니다 . 이 예에서는 매일 정오에 명령을 실행합니다. 이 명령은 서버의 인증서가 다음 30일 이내에 만료되는지 확인하고 만료되면 갱신합니다. --quiet
지시문은 출력 certbot
을 생성하지 않도록 지시합니다.
0 12 * * * /usr/bin/certbot renew --quiet
3. 파일을 저장하고 닫습니다. 설치된 모든 인증서가 자동으로 갱신되고 다시 로드됩니다.
3. 요약
등록된 도메인 이름에 대한 SSL/TLS 인증서를 생성하기 위해 Let’s Encrypt 에이전트를 설치했습니다. 인증서를 사용하고 자동 인증서 갱신을 설정하도록 NGINX를 구성했습니다. NGINX 및 NGINX Plus용 Let’s Encrypt 인증서를 사용하면 몇 분 안에 간단하고 안전한 웹사이트를 구축하고 실행할 수 있습니다.