문서의 이전 판입니다!


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일마다 자동으로 해주면 좋다.

서브도메인이 제거된 경우 참조

####### f4map.vaslor.net #######
server {
        listen 80;
        listen 443;  # 같이 해도 됨~!
        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 on;
        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
1)
자동기능이 있지만 멀티서버, 서브도메인 설정 등이 있으면 잘 안되더라

연결문서