Ubuntu 14.04에서 Let's Encrypt로 Nginx를 보호하는 방법
소개
Let’s Encrypt는 무료 TLS/SSL 인증서를 얻고 설치하여 웹 서버에서 암호화된 HTTPS를 활성화하는 쉬운 방법을 제공하는 새로운 인증 기관(CA)입니다. 필요한 단계의 대부분(전부는 아님)을 자동화하려고 시도하는 소프트웨어 클라이언트인 Certbot을 제공하여 프로세스를 단순화합니다. 현재 인증서를 얻고 설치하는 전체 프로세스는 Apache 및 Nginx 웹 서버 모두에서 완전히 자동화되어 있습니다.
이 튜토리얼에서는 Certbot을 사용하여 무료 SSL 인증서를 얻고 Ubuntu 14.04 LTS에서 Nginx와 함께 사용하는 방법을 보여줍니다. 또한 SSL 인증서를 자동으로 갱신하는 방법도 알려드립니다.
이 튜토리얼에서는 별도의 서버 블록 파일 대신 기본 Nginx 구성 파일을 사용합니다. 이 Nginx 서버는 Let’s Encrypt 자습서로 차단합니다.
전제 조건
이 튜토리얼을 따르기 전에 몇 가지가 필요합니다.
sudo
권한이 있는 루트가 아닌 사용자가 있는 Ubuntu 14.04 서버. Ubuntu 14.04 자습서의 초기 서버 설정에 따라 이러한 사용자 계정을 설정하는 방법을 배울 수 있습니다.- Nginx 설치, Ubuntu 14.04 LTS에 Nginx 설치 방법
- 인증서를 사용하려는 등록된 도메인 이름을 소유하거나 제어해야 합니다. 아직 등록된 도메인 이름이 없는 경우 많은 도메인 이름 등록 기관(예: Namecheap, GoDaddy 등) 중 하나에 등록할 수 있습니다.
- 도메인을 서버의 공개 IP 주소로 가리키는 DNS A 레코드. 추가 방법에 대한 자세한 내용은 이 호스트 이름 자습서를 따를 수 있습니다. 이는 Let’s Encrypt가 인증서를 발급하는 도메인을 소유하고 있음을 확인하는 방법 때문에 필요합니다. 예를 들어
example.com
에 대한 인증서를 얻으려면 유효성 검사 프로세스가 작동하려면 해당 도메인이 서버로 확인되어야 합니다. 설정에서는example.com
및www.example.com
을 도메인 이름으로 사용하므로 두 DNS 레코드가 모두 필요합니다.
모든 필수 구성 요소가 준비되면 Let’s Encrypt 클라이언트 소프트웨어인 Certbot 설치로 이동하겠습니다.
1단계 - Certbot 설치
SSL 인증서를 얻기 위해 Let’s Encrypt를 사용하는 첫 번째 단계는 서버에 certbot
소프트웨어를 설치하는 것입니다. Certbot 개발자는 최신 버전의 소프트웨어로 자체 Ubuntu 소프트웨어 저장소를 유지 관리합니다. Certbot은 매우 활발하게 개발 중이기 때문에 이 저장소를 사용하여 Ubuntu에서 제공하는 것보다 최신 Certbot을 설치할 가치가 있습니다.
먼저 저장소를 추가합니다.
- sudo add-apt-repository ppa:certbot/certbot
동의하려면 ENTER
를 눌러야 합니다. 그런 다음 패키지 목록을 업데이트하여 새 리포지토리의 패키지 정보를 선택합니다.
- sudo apt-get update
마지막으로 apt-get
을 사용하여 Certbot을 설치합니다.
- sudo apt-get install python-certbot-nginx
이제 certbot
Let’s Encrypt 클라이언트를 사용할 준비가 되었습니다.
2단계 - Nginx 설정
Certbot은 Nginx용 SSL을 자동으로 구성할 수 있지만 구성에서 올바른 server
블록을 찾을 수 있어야 합니다. 인증서를 요청하는 도메인과 일치하는 server_name
지시문을 찾아 이를 수행합니다. 새로운 Nginx 설치로 시작하는 경우 기본 구성 파일을 업데이트할 수 있습니다.
- sudo nano /etc/nginx/sites-available/default
기존 server_name
줄을 찾습니다.
server_name localhost;
localhost
를 도메인 이름으로 바꿉니다.
server_name example.com www.example.com;
파일을 저장하고 편집기를 종료하십시오. 다음을 사용하여 구성 편집의 구문을 확인하십시오.
- sudo nginx -t
오류 없이 실행되면 Nginx를 다시 로드하여 새 구성을 로드합니다.
- sudo service nginx reload
Certbot은 이제 올바른 server
블록을 찾아 업데이트할 수 있습니다. 이제 HTTPS 트래픽을 허용하도록 방화벽을 업데이트합니다.
3단계 - SSL 인증서 받기
Certbot은 다양한 플러그인을 통해 SSL 인증서를 얻는 다양한 방법을 제공합니다. Nginx 플러그인은 필요할 때마다 Nginx를 재구성하고 구성을 다시 로드합니다.
- sudo certbot --nginx -d example.com -d www.example.com
이것은 --nginx
플러그인과 함께 certbot
을 실행하고, -d
를 사용하여 인증서가 유효한 이름을 지정합니다.
certbot
을 처음 실행하는 경우 이메일 주소를 입력하고 서비스 약관에 동의하라는 메시지가 표시됩니다. 이렇게 하면 certbot
이 Let’s Encrypt 서버와 통신한 다음 인증서를 요청하는 도메인을 제어하는지 확인하기 위해 챌린지를 실행합니다.
성공하면 certbot
이 HTTPS 설정 구성 방법을 묻습니다.
OutputPlease 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):
원하는 항목을 선택한 다음 ENTER
를 누르십시오. 구성이 업데이트되고 Nginx가 다시 로드하여 새 설정을 선택합니다. certbot
은 프로세스가 성공했고 인증서가 어디에 저장되었는지 알려주는 메시지로 마무리됩니다.
OutputIMPORTANT 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
이제 인증서가 다운로드, 설치 및 구성되었습니다. https://
를 사용하여 웹사이트를 새로고침하고 브라우저의 보안 표시기를 확인하세요. 일반적으로 녹색 자물쇠 아이콘으로 사이트가 제대로 보호되고 있음을 나타내야 합니다. SSL Labs 서버 테스트를 사용하여 서버를 테스트하면 A 등급을 받습니다.
4단계 - Certbot 자동 갱신 확인
Let’s Encrypt의 인증서는 90일 동안만 유효합니다. 이는 사용자가 인증서 갱신 프로세스를 자동화하도록 권장하기 위한 것입니다. 우리가 설치한 certbot
패키지는 시스템 타이머를 통해 하루에 두 번 'certbot renew'를 실행하여 이를 처리합니다. 비 시스템 배포판에서 이 기능은 /etc/cron.d
에 있는 스크립트에 의해 제공됩니다. 이 작업은 하루에 두 번 실행되며 만료 30일 이내의 모든 인증서를 갱신합니다.
갱신 프로세스를 테스트하려면 certbot
을 사용하여 시험 실행을 할 수 있습니다.
- sudo certbot renew --dry-run
오류가 표시되지 않으면 모든 설정이 완료된 것입니다. 필요한 경우 Certbot은 인증서를 갱신하고 Nginx를 다시 로드하여 변경 사항을 적용합니다. 자동 갱신 프로세스가 실패하면 Let’s Encrypt는 지정한 이메일로 메시지를 보내 인증서가 만료될 때 경고합니다.
결론
이 튜토리얼에서는 Let’s Encrypt 클라이언트 certbot
을 설치하고, 도메인용 SSL 인증서를 다운로드하고, 이러한 인증서를 사용하도록 Nginx를 구성하고, 자동 인증서 갱신을 설정했습니다. Certbot 사용에 대한 추가 질문이 있는 경우 해당 문서에서 시작하는 것이 좋습니다.