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개월 마다 갱신을 해줘야 계속 작동된다.
자동으로 certbot은 매일 2회 갱신을 시도하는데, 갱신기한이 1개월 남았을 때만 실제로 갱신이 이루어지므로 로그가 지저분하긴 하지만 그냥 둬도 된다.
/etc/cron.d/certbot
파일 참조. 출처 참조.
하루 두번은 불필요하다고 생각되면, 변경하자.
매월 1일로 변경
0 0 1 * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew
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/openwiki.kr/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/openwiki.kr/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; }
추가하기
서브도메인을 추가하기
sudo certbot
원하는 도메인의 번호를 입력한다.
Plugins selected: Authenticator nginx, Installer nginx Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6: openwiki.kr 7: vaslor.net 8: bb.vaslor.net 9: map.vaslor.net 10: monsterid.vaslor.net 11: plex.vaslor.net 12: tv.vaslor.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 10
자동 redirect를 할 것이냐고 물어본다. 1 혹은 2 입력하면 됨.
서버이전하기
이전할 서버에도 설치 해주고, 인증파일의 이동은
기본적으로 /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 브라우저는 운영체제의 루트인증서 목록에 의존하지 않고 자체 루트인증서 목록을 사용 )
내 컴퓨타가 해결되었는 지 확인해 볼 수 있는 사이트