Let's encrypt

무료 SSL 서버인증서를 제공하는 https://letsencrypt.org 를 이용해보자.

https://letsencrypt.org

등록

기존의 웹서버 설정을 변경하지 않는 standalone으로 할 것이므로 1) https://certbot.eff.org 에서

none of aboveubuntu 고르고 나오는 설명대로 진행하면 된다.

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 브라우저는 운영체제의 루트인증서 목록에 의존하지 않고 자체 루트인증서 목록을 사용 )

내 컴퓨타가 해결되었는 지 확인해 볼 수 있는 사이트

1)
자동기능이 있지만 멀티서버, 서브도메인 설정 등이 있으면 잘 안되더라

연결문서