Let's Encrypt SSL 인증서 발급은 Certbot을 이용합니다. Certbot은 우분투 20.04버전을 설치 후 letsencrypt를 설치하였다면 그 안에 포함되어 있기 때문에 별도의 Certbot을 설치할 필요가 없습니다.
Let's encrypt를 우분투에 설치하는 명령어입니다.
sudo apt update
sudo apt-get install letsencrypt -y
Let's encrypt 인증 방식은 크게 4가지가 있습니다.
webroot : 사이트 디렉토리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드하 여 인증서를 발급하는 방법
. 실제 작동하고 있는 웹서버의 특정 데렉토리의 특정 파일 쓰기 작업을 통해서 인증
. 이 방식의 장점은 nginx를 중단시킬 필요가 없음.
. 이 방법의 단점은 인증 명령에 하나의 도메인 인증서만 발급 가능
웹서버
. Nginx나 아파치와 같은 웹서버에서 직접 SSL 인증을 실시하고 웹서버에 맞는
SSL세팅값을 부여
. 발급이나 갱신을 위해 웹서버를 중단시킬 필요가 없음
. 인증서 갱신 시 상황에 맞게 세팅을 자동으로 업데이트
. 사용자가 세팅을 변경할 수 있지만 자동 업데이트 시 반영되지는 않음
Standalone : 사이트 작동을 멈추고 이 사이트의 네크워킹을 이용해 사이트 유효
을 확인해 Let’s Encrypt SSL 인증서를 발급하는 방식
. 80포트로 가상 staandalone 웹서버를 띄워 인증서를 발급
. 이 방식은 동시에 여러 도메인을 발급 받을 수 있음
. 그렇지만 인증서 발급 전에 Nginx를 중단하고 발급 완료 후 다시 Nginx를 시작 해야 함
DNS : 도메인을 쿼리해 확인되는 TXT 레코드로 사이트 유효성을 확인하는 방법
. 와일드 카드 방식으로 인증서를 발급 가능
. 이 방법은 당연하게도 서버 관리자가 도메인 DNS를 관리/수정할 수 있어야 하며
. 인증서 갱신 시마다 DNS에서 TXT값을 변경해야 하므로 외부에서 TXT 레코드를 입 력할 수 있도록 DNS가 API를 제공하는 경우만 갱신 과정을 자동으로 처리(클라우 드 플레어 API가 대표적인 사례)
이 중 저는 webroot 방식을 이용하였습니다.
webroot 방식을 이용할 경우 nginx를 사용하는 것이 더 편하고 쉽기 때문에 nginx를 설치 하여 주어야 합니다.
nginx의 설정 파일에 들어가 설정을 진행해 주어야 합니다.
sudo nano /etc/nginx/sites-available/default
아래의 코드를 설정 파일에 넣어주어야 합니다.
location ~ /.well-known/acme-challenge/ {
allow all;
root /var/www/letsencrypt;
}
그리고 nginx서버를 재시작 해주어야 합니다.
sudo systemctl restart nginx
서버 재시작 후에 Let's encrypt 인증서를 발급 하려면
cervot-auto ceronly --webroot
명령어를 입력한다.
명령어 입력시 자신의 도메인을 입력을 시켜주어야 합니다.
도메인을 입력한 다음 nginx 설정에서 설정해 주었던 /var/www/letsencrypt을 입력 해 줍니다.
이러면 해당 도메인에 연결되어 있는 ip에 접속하여 let's encrypt가 해당 폴더에 들어가 인증을 합니다. 인증이 완료가 되면 아래와 같이 성공이 되었다고 나옵니다.
한문장으로 명령어를 입력 하고 싶다면
위의 사진처럼 진행하시면 됩니다.