문서의 이전 판입니다!
Let's encrypt
무료 SSL 서버인증서를 제공하는 https://letsencrypt.org 를 이용해보자.
등록
기존의 웹서버 설정을 변경하지 않는 standalone
으로 할 것이므로 1)
https://certbot.eff.org 에서
none of above
및 ubuntu
고르고 나오는 설명대로 진행하면 된다.
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot
인증하는 동안 80 포트를 사용하기 때문에 잠시 Nginx 웹서버를 꺼야 한다.
sudo service nginx stop
인증 작업…
sudo certbot certonly
2번 선택 (standalone)
Saving debug log to /var/log/letsencrypt/letsencrypt.log How would you like to authenticate with the ACME CA? ------------------------------------------------------------------------------- 1: Nginx Web Server plugin - Alpha (nginx) 2: Spin up a temporary webserver (standalone) 3: Place files in webroot directory (webroot) ------------------------------------------------------------------------------- Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 2 Plugins selected: Authenticator standalone, Installer None
사용할 도메인 입력… 이미 dns에 등록된 주소만 되므로 현재 사용중인 주소만 입력한다.
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): vaslor.net io.vaslor.net chat.vaslor.net bb.vaslor.net f4map.vaslor.net news.vaslor.net map.vaslor.net
Obtaining a new certificate Performing the following challenges: http-01 challenge for vaslor.net http-01 challenge for io.vaslor.net http-01 challenge for chat.vaslor.net http-01 challenge for bb.vaslor.net http-01 challenge for f4map.vaslor.net Waiting for verification... Cleaning up challenges
위치는 /etc/letsencrypt/live/
에 도메인 이름의 서브폴더에 저장된다.
정보보기
등록된 도메인과 인증서의 경로를 표시해준다.
sudo certbot certificates
Domains: vaslor.net bb.vaslor.net chat.vaslor.net f4map.vaslor.net io.vaslor.net map.vaslor.net news.vaslor.net
갱신
3개월 마다 갱신을 해줘야 계속 작동된다.
standalone 상태에서는 갱신 시 80포트를 사용하므로 웹서버를 잠시 정지시키고 해야한다.
sudo certbot renew --pre-hook "service nginx stop" \ --post-hook "service nginx start"
Crontab (Linux)을 이용해서 60일마다 자동으로 해주면 좋다.
#2개월마다 3일 3시 33분 33 3 3 */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
서브도메인이 제거된 경우 참조
예
####### f4map.vaslor.net ####### server { listen 80; listen 443 ssl; root /home/www/f4map; server_name f4map.vaslor.net; location / { try_files $uri $uri/ index.php; } # 브라우져 캐쉬 세팅 location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; access_log off; } # SSL ssl_certificate /etc/letsencrypt/live/vaslor.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/vaslor.net/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Enable server-side protection against BEAST attacks ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; include common.conf; }
서버이전하기
이전할 서버에도 설치 해주고, 인증파일의 이동은
기본적으로 /etc/letsencript
의 내용을 복사해 넣으면 된다. 다만, 폴더 권한이 root:root 이므로 약간의 트릭이 필요하다.
임시 거처로 옮긴 다음 권한을 바꿔준다.
# 원본 서버 # Note -p is added sudo rsync -az -p --progress /etc/letsencrypt ~/ sudo chown -R $USER:$USER ~/letsencrypt
이제 Midnight Commander (MC)의 ftp나 뭐 그런 것으로 대상 서버로 해당 폴더를 옮긴다.
# 대상 서버 # Lack of trailing slash on source will cause the directory to be created on the destination directory sudo rsync -az --progress ~/letsencrypt /etc sudo chown -R root:root /etc/letsencrypt
etc 폴더로 옮기고, root 권한을 먹여줌.
자세한 것은 참조
에러
nginx plugin 없다?
sudo apt install python3-certbot-nginx
D3 문제
Let’s Encrypt가 사용하는 DST Root CA X3 루트인증서는 2021년 9월에 만료.
Android 7.1 이전 버전은 Let’s Encrypt의 인증서가 설치된 웹 사이트에 접속하기 위해서는 ISRG Root X1루트인증서가 등록되어 있는 Firefox 브라우저로는 접속 가능 ( Firefox 브라우저는 운영체제의 루트인증서 목록에 의존하지 않고 자체 루트인증서 목록을 사용 )