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

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

2022-06-01 last update

10 minutes reading Let's Encrypt Nginx Security Ubuntu 16.04

소개


Let's Encrypt는 인증서 발급 기관(CA)으로 무료 인증서를 얻고 설치하는 간단한 방법TLS/SSL certificates을 제공하여 웹 서버에서 암호화된 HTTPS를 사용합니다.이것은 소프트웨어 클라이언트 Certbot을 제공함으로써 절차를 간소화합니다. 이 클라이언트는 대부분의 (전부가 아니라면) 필요한 절차를 자동화하려고 합니다.현재 아파치와 Nginx에서 인증서를 얻고 설치하는 전체 과정은 완전히 자동화되어 있다.
이 강좌에서는 Certbot을 사용하여 Ubuntu 16.04에서 Nginx에 대한 무료 SSL 인증서를 가져오고 인증서를 자동 갱신으로 설정합니다.
이 강좌는 별도의 서버 블록 파일 대신 기본 Nginx 구성 파일을 사용합니다.We recommend 각 도메인에 대해 새 Nginx 서버 블록 파일을 만듭니다. 일반적인 오류를 피하고 기본 파일을 리셋 구성으로 유지할 수 있기 때문입니다.서버 블록을 사용하여 SSL을 설정하려면 this Nginx server blocks with Let’s Encrypt tutorial 을 따릅니다.

선결 조건


본 강좌를 배우려면 다음이 필요합니다.
  • 본 강좌initial server setup for Ubuntu 16.04에 따라 설정된 Ubuntu 16.04 서버는 sudo 비root 사용자와 방화벽을 포함한다.
  • 완전히 등록된 도메인 이름입니다.이 강좌는 항상 사용됩니다example.com.Namecheap에서 도메인 이름을 구입하거나 Freenom에서 도메인 이름을 무료로 받거나 선택한 도메인 이름 등록기를 사용할 수 있습니다.
  • 서버에 다음 두 개의 DNS 레코드가 설정되어 있습니다.추가 방법에 대한 자세한 내용은 this hostname tutorial 을 참조하십시오.
  • 서버의 공용 IP 주소를 가리키는 A 레코드입니다.
  • 서버의 공용 IP 주소를 가리키는 A 레코드입니다.
  • Nginx 설치 방식은 다음과 같습니다How To Install Nginx on Ubuntu 16.04.
  • 1단계 - Certbot 설치


    Let's Encrypt를 사용하여 SSL 인증서를 얻는 첫 번째 단계는 서버에 Certbot 소프트웨어를 설치하는 것입니다.
    Certbot은 적극적으로 개발 중이기 때문에 Ubuntu가 제공하는 Certbot 패키지는 종종 유행이 지났다.그러나 Certbot 개발자는 최신 버전의 Ubuntu 소프트웨어 저장소를 유지했기 때문에 이 저장소를 사용할 것입니다.
    먼저 저장소를 추가합니다.
    1. sudo add-apt-repository ppa:certbot/certbot
    접수하려면 example.com 를 누르십시오.그런 다음 패키지 목록을 업데이트하여 새 저장소의 패키지 정보를 가져옵니다.
    1. sudo apt-get update
    마지막으로 www.example.com 를 사용하여 Certbot의 Nginx 패키지를 설치합니다.
    1. sudo apt-get install python-certbot-nginx
    Certbot은 이제 사용할 수 있지만, Nginx에 SSL을 설정하기 위해서는 Nginx의 일부 설정을 검증해야 합니다.

    2단계 - Nginx 설정


    Certbot은 Nginx에 대해 자동으로 SSL을 구성할 수 있지만, 구성에서 정확한 블록ENTER을 찾을 수 있어야 합니다.이것은 인증서를 요청한 도메인과 일치하는 apt-get 명령을 찾아서 이 점을 실현합니다.
    새 Nginx를 처음 설치하면 기본 구성 파일을 업데이트할 수 있습니다.server 또는 가장 좋아하는 텍스트 편집기로 엽니다.
    1. sudo nano /etc/nginx/sites-available/default
    기존 server_name 행을 찾아 도메인 이름으로 밑줄 nano 을 바꿉니다.
    /etc/nginx/sites available/default
    . . .
    server_name example.com www.example.com;
    . . .
    
    파일을 저장하고 편집기를 종료합니다.
    그런 다음 구성 편집의 구문을 검증합니다.
    1. sudo nginx -t
    오류가 발생하면 파일을 다시 열고 맞춤법 오류를 확인한 다음 다시 테스트하십시오.
    구성 구문이 올바르면 Nginx를 다시 로드하여 새 구성을 로드합니다.
    1. sudo systemctl reload nginx
    Certbot에서 올바른 블록server_name을 찾아 업데이트할 수 있습니다.다음은 HTTPS 트래픽을 허용하기 위해 방화벽을 업데이트합니다.

    3단계 - HTTPS가 방화벽을 통과하도록 허용


    필수 지침에 따라 방화벽_이 활성화된 경우 HTTPS 트래픽을 허용하도록 설정을 조정해야 합니다.다행히도 Nginx는 설치할 때 server에 개요 파일을 등록했다.
    다음 내용을 입력하여 현재 설정을 볼 수 있습니다.
    1. sudo ufw status
    이 가능하다, ~할 수 있다,...
    Output
    Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
    HTTPS 트래픽을 추가로 허용하려면 Nginx 전체 구성 파일을 허용한 다음 이중화된 Nginx HTTP 구성 파일 여유를 제거할 수 있습니다.
    1. sudo ufw allow 'Nginx Full'
    2. sudo ufw delete allow 'Nginx HTTP'
    현재 상태는 다음과 같습니다.
    1. sudo ufw status
    Output
    Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
    이제 Certbot을 실행하고 인증서를 받을 수 있습니다.

    단계 4 - SSL 인증서 얻기


    Certbot은 다양한 플러그인을 통해 다양한 SSL 인증서 획득 방법을 제공합니다.Nginx 플러그인은 Nginx를 재구성하고 필요한 경우 구성을 다시 로드합니다.
    1. sudo certbot --nginx -d example.com -d www.example.com
    이것은 ufw 플러그인을 사용하여 실행됩니다 ufw. 사용 certbot 인증서의 유효한 이름을 지정합니다.
    만약 이것이 첫 번째 달리기 --nginx 라면, 시스템은 당신에게 전자 우편 주소를 입력하고 서비스 조항에 동의하라는 것을 알릴 것입니다.이 작업을 수행하면 -d Let's Encrypt 서버와 통신한 다음 질의를 실행하여 인증서를 요청할 도메인을 제어했는지 확인합니다.
    성공하면 certbot HTTPS 설정을 구성하는 방법을 묻습니다.
    Output
    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
    선택을 선택하고 클릭certbot.구성이 업데이트되고 새 설정을 가져오기 위해 Nginx가 다시 로드됩니다.certbot 프로세스가 성공했고 인증서가 어디에 저장되었는지 알려주는 메시지로 끝납니다.
    Output
    IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2017-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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
    인증서가 다운로드, 설치 및 로드됩니다.ENTER를 사용하여 웹 사이트를 다시 불러오고 브라우저의 안전 표시등을 주의하십시오.일반적으로 녹색 자물쇠 아이콘이 있는 사이트가 제대로 보호되었음을 표시해야 합니다.테스트 서버SSL Labs Server Test를 사용하는 경우 A등급을 받습니다.
    테스트 갱신 과정을 통해 끝냅시다.

    단계 5 - Certbot 자동 갱신 확인


    암호화된 인증서는 90일 안에만 유효합니다.이것은 사용자가 인증서 갱신 과정을 자동화하도록 장려하기 위해서이다.우리가 설치한 certbot 소프트웨어 패키지는 시스템 d 타이머를 통해 매일 두 번씩'certbot 갱신'을 실행하여 이 문제를 해결했다.비시스템드 버전에서 이 기능은 https:// 의 스크립트에서 제공합니다.이 작업은 매일 두 번 실행되며, 만료 후 30일 이내의 모든 인증서를 갱신합니다.
    갱신 프로세스를 테스트하려면 certbot 를 사용하여 파일럿을 실행할 수 있습니다.
    1. sudo certbot renew --dry-run
    만약 당신이 잘못을 보지 못했다면, 모든 것이 준비되었을 것입니다.필요한 경우 Certbot에서 인증서를 갱신하고 변경 사항을 가져오기 위해 Nginx를 다시 로드합니다.자동 갱신 프로세스가 실패하면 Let's Encrypt는 인증서가 만료될 때 경고하는 메시지를 지정한 이메일로 보냅니다.

    결론


    이 강좌에서 Let's Encrypt 클라이언트/etc/cron.d를 설치하고 도메인의 SSL 인증서를 다운로드하여 Nginx를 이 인증서를 사용하도록 설정하고 자동 인증서 갱신을 설정했습니다.Certbot 사용에 대한 자세한 내용은 their documentation 부터 확인할 수 있습니다.