웹사이트 검색

CentOS 8에서 Let's Encrypt를 사용하여 Nginx를 보호하는 방법


EFF(Electronic Frontier Foundation)가 2016년 4월에 설립한 Let's Encrypt는 웹사이트에 TLS 암호화를 무료로 제공하는 무료 자동 디지털 인증서입니다.

Let's Encrypt 인증서의 목적은 보안 인증서의 유효성 검사, 생성, 서명 및 자동 갱신을 자동화하는 것입니다. 이 인증서를 사용하면 복잡함 없이 간단하고 번거롭지 않은 방식으로 HTTPS 프로토콜을 사용하여 웹 서버에 대한 암호화된 연결이 가능해집니다. 인증서는 자동 갱신이 활성화될 수 있는 기간인 90일 동안만 유효합니다.

권장 읽기: CentOS 8에서 Let’s Encrypt SSL 인증서로 Apache를 보호하는 방법

이 문서에서는 CentOS 8에서 Nginx 웹 서버를 보호하기 위해 무료 SSL 인증서를 얻기 위해 Let's Encrypt를 설치하는 방법을 보여줍니다( 동일한 지침이 RHEL 8에서도 작동합니다). SSL 인증서를 자동으로 갱신하는 방법도 알려드리겠습니다.

전제 조건

진행하기 전에 다음 사항을 확인하세요.

1. 웹서버의 전용 IP 주소를 가리키는 정규화된 도메인 이름(FQDN)입니다. 이는 DNS 웹 호스팅 공급자의 클라이언트 영역에서 구성되어야 합니다. 이 튜토리얼에서는 IP 주소 34.70.245.117을 가리키는 도메인 이름 linuxtechwhiz를 사용하고 있습니다.

2. 표시된 것처럼 dig 명령어를 사용하여 정방향 조회를 수행하여 이를 확인할 수도 있습니다.

dig linuxtechwhiz.info

3. Nginx가 웹서버에 설치되어 실행됩니다. 터미널에 로그인하고 아래 명령을 실행하여 이를 확인할 수 있습니다. Nginx가 설치되지 않은 경우 CentOS 8에 Nginx 설치 문서를 따르세요.

sudo systemctl status nginx

4. 웹 브라우저에서 웹 서버의 URL을 방문하여 확인할 수도 있습니다.

http://server-IP-or-hostname

URL을 보면 해당 사이트가 안전하지 않아 암호화되지 않았음을 분명히 알 수 있습니다. 이는 웹 서버에 대한 모든 요청을 가로챌 수 있음을 의미합니다. 여기에는 사용자 이름, 비밀번호, 주민등록번호, 신용 카드 정보와 같은 중요하고 기밀 정보가 포함됩니다.

이제 직접 Let's Encrypt를 설치해 보겠습니다.

1단계. CentOS 8에 Certbot 설치

Let's Encrypt 인증서를 설치하려면 먼저 certbot이 설치되어 있어야 합니다. 이는 Let's Encrypt Authority에서 보안 인증서를 가져오고 웹 서버에서 사용할 인증서의 유효성 검사 및 구성을 자동화할 수 있는 확장 가능한 클라이언트입니다.

컬 명령을 사용하여 certbot을 다운로드합니다.

sudo curl -O https://dl.eff.org/certbot-auto

그런 다음 인증서를 /usr/local/bin 디렉터리로 이동합니다.

sudo mv certbot-auto /usr/local/bin/certbot-auto

다음으로, 표시된 대로 certbot 파일에 파일 권한을 할당합니다.

chmod 0755 /usr/local/bin/certbot-auto

2단계. Nginx 서버 블록 구성

Nginx의 서버 블록은 Apache의 가상 호스트와 동일합니다. 서버 차단을 설정하면 하나의 서버에 여러 웹사이트를 설정할 수 있을 뿐만 아니라 certbot이 인증 기관 – CA에 도메인 소유권을 증명할 수 있습니다.

서버 블록을 생성하려면 표시된 명령을 실행하십시오.

sudo vim /etc/nginx/conf.d/www.linuxtechwhiz.info

도메인 이름을 자신의 도메인 이름으로 바꾸십시오. 그런 다음 아래 구성을 붙여넣습니다.

server {
   server_name www.linuxtechwhiz.info;
   root /opt/nginx/www.linuxtechwhiz.info;

   location / {
       index index.html index.htm index.php;
   }

   access_log /var/log/nginx/www.linuxtechwhiz.info.access.log;
   error_log /var/log/nginx/www.linuxtechwhiz.info.error.log;

   location ~ \.php$ {
      include /etc/nginx/fastcgi_params;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

파일을 저장하고 텍스트 편집기를 종료합니다.

3단계: CentOS 8에 Lets Encrypt 인증서 설치

이제 certbot 명령을 사용하여 Let's Encrypt 보안 인증서 가져오기 및 구성을 초기화합니다.

sudo /usr/local/bin/certbot-auto --nginx

이 명령은 표시된 대로 여러 Python 패키지와 해당 종속성을 실행하고 설치합니다.

그 후에는 다음과 같은 대화형 프롬프트가 표시됩니다.

모든 일이 순조롭게 진행되었다면 마지막에 축하 메시지를 볼 수 있을 것입니다.

Nginx 사이트가 암호화되었는지 확인하려면 웹페이지를 다시 로드하고 URL 시작 부분에 있는 자물쇠 기호를 관찰하세요. 이는 사이트가 SSL/TLS 암호화를 사용하여 보호된다는 것을 나타냅니다.

보안 인증서에 대한 자세한 내용을 보려면 자물쇠 기호를 클릭하고 '인증서' 옵션을 선택하세요.

보안 인증서에 대한 자세한 정보는 아래와 같이 표시됩니다.

또한 보안 인증서의 강도를 테스트하려면 https://www.ssllabs.com/ssltest/로 이동하여 보안 인증서 상태에 대한 보다 정확하고 심층적인 분석을 찾아보세요.

4단계. Let's Encrypt 인증서 갱신

앞서 살펴본 것처럼 보안 인증서는 90일 동안만 유효하며 만료되기 전에 갱신해야 합니다.

다음 명령을 실행하여 인증서 갱신 프로세스를 시뮬레이션하거나 테스트할 수 있습니다.

sudo /usr/local/bin/certbot-auto renew --dry-run

결론

이것으로 CentOS 8에서 Let's Encrypt를 사용하여 Nginx를 보호하는 방법에 대한 튜토리얼을 마무리합니다. Let's Encrypt는 수동으로 수행하기 복잡한 작업인 Nginx 웹 서버를 보호하는 효과적이고 번거롭지 않은 방법을 제공합니다.

이제 귀하의 사이트가 완전히 암호화되었습니다. 인증서 만료일로부터 몇 주 후에 EFF는 만료된 인증서로 인해 발생할 수 있는 중단을 방지하기 위해 인증서를 갱신하라는 이메일을 통해 알림을 보냅니다. 오늘은 여기까지입니다!