사용자:Senouis/고도3 도큐먼트/Certbot

리버티게임, 모두가 만들어가는 자유로운 게임

Let's encrypt SSL 인증서 서비스를 이용할 수 있는 Certbot 사용법에 대한 안내입니다.

현재 대한민국에서는 개인정보를 취급하는 웹 사이트에 무조건 보안이 된 연결인 HTTPS를 적용해야 하므로, 리버티게임에서 플레이할 수 있는 모든 게임은 HTTPS를 사용합니다. 그러나 전용 서버를 사용하는 마인크래프트 같은 멀티플레이 게임들은 HTTPS로 클라이언트가 접속할 경우 서버도 HTTPS를 지원해야 합니다. 따라서 리버티게임에서 전용 서버가 필요한 실시간 멀티플레이 게임을 만들 경우 전용 서버 프로그램에 SSL 인증서를 포함해야 합니다.

이 문서는 데비안 리눅스 혹은 우분투 리눅스를 사용한다는 전제 아래 작성되었습니다. 윈도우로 전용 서버 프로그램을 돌리는 것은 윈도우용 certbot이 아직 베타 단계이므로 권장하지 않습니다. 집에 있는 데스크탑이나 노트북 컴퓨터에 리눅스를 설치하기 곤란하다면 라즈베리파이(Raspberry Pi) 4B 혹은 5 버전의 제품을 구매하여 SD 카드에 Raspberry Pi OS 리눅스(데비안 기반)를 설치하는 것을 권장합니다. 절대 성능은 노트북은 고사하고 스마트폰과 비슷한 수준이지만, 간단한 게임 서버 하나 굴리는 정도로는 충분하며, 전기를 적게 먹기 때문에 부모님에게 전기료 때문에 등짝 스매싱을 맞을 염려가 없습니다.[1]

  1. 터미널(Terminal) 프로그램을 열고 다음 명령어를 입력 후 엔터를 눌러 certbot을 설치합니다:
    sudo apt -y install certbot
  2. 설치가 끝나면 터미널 창에서 다음 명령어를 입력합니다. (도메인 이름)에는 인증 받고자 하는 도메인을 입력합니다:
    certbot certonly --manual -d (도메인 이름)
  3. 안내문들의 경우 (Y)es/(N)o 옵션이 있는데 Y를 입력하고 엔터를 쳐서 동의해야 되는 것도 있고, 이메일 주소 전송 요구 같이 N을 쳐도 넘어가는 안내문이 있습니다.
  4. 그럼 challenge를 수행한 후, 임의의 알파벳과 숫자 기호 조합으로 된 특정한 긴 문자열을 TXT 레코드로 입력하라는 안내가 뜹니다.
  • 그럼 그걸 자신이 획득한 도메인 주소를 제공하는 DNS 사이트에 들어가 도메인 주소의 'TXT 레코드 값'에 문자열을 붙이고 저장하면 됩니다. TXT 레코드 항목이 없으면 TXT라는 이름의 레코드를 만드시면 됩니다.

리눅스 기준으로 certbot이 만든 인증서는 /etc/letsencrypt/live/(도메인 이름)/fullchain.pem으로 존재합니다. 이걸 서버 바이너리에 가져와 붙이면 됩니다.

꼭 알아야 할 것[편집 | 원본 편집]

  1. certbot의 인증서 유효 기간은 3개월입니다. 그러므로 3개월 단위로 유효 기간이 끝나기 직전에 다음 명령어를 터미널에 쳐야 합니다:
     certbot renew 
    1. 리눅스를 잘 다룬다면 예약 작업 유틸리티인 cron으로 사용해 주기적으로 실행하는 방법이 있습니다.
  2. certbot은 무조건 인증서 발급을 위한 통신을 네트워크 통신 포트 80/443으로 수행합니다! 보통 웹 서버를 돌릴 때 이 포트를 사용하기 때문에, 게임 서버에서 지원하는 통신 포트와 다를 수 있습니다.
  3. certbot은 한 도메인에 대하여 1주에 최대 5번의 인증서 생성 요청만 받습니다. 따라서 에러가 났다고 무작정 다시 시도하지 마시고, 다음 경우에 해당하는지 확인해야 합니다.
    1. 단순히 이 도메인으로 인증이 완료되는지 확인하려면 --dry-run 옵션을 certbot 명령어 뒤에 붙이는 방법이 있습니다. 이 경우 시뮬레이션이 돌아갑니다.
    2. 홈서버를 돌리려는 집에서 가정용 공유기를 사용하는 경우 반드시 --manual 옵션을 썼는지 확인합니다. 공유기에 연결된 컴퓨터를 홈 서버 컴퓨터로 사용하는 경우 '포트 포워드'[2]를 시행했음에도 인증서 발급이 실패하는 경우가 있습니다. manual 옵션을 적용한 후 화면에 뜨는 마구 뒤섞인 것처럼 보이는 한 줄의 문자열을 꼭 기억하세요! 이것을 반드시 도메인 주소의 TXT 레코드라는 부분에 복사해야 합니다.
    3. 어떤 도메인 주소들은 let's encrypt가 인증서 생성을 거부하는 경우가 있습니다. 보통 무료 제공 도메인들에 이런 경우가 많습니다. 리버티게임에서 전용 서버 프로그램을 요구하는 게임을 호스팅하고 싶은데 이런 일이 있는 경우를 대비해 현재 도메인 주소 '*.libertygame.work'[3]를 도메인 전용 인증서와 함께 조건부 대여하는 방법[4]을 고려하고 있습니다.

  1. 그렇기 때문에 리버티게임에서 전용 서버 프로그램을 배포할 경우 라즈베리파이를 지원하기 위해 ARM Linux 플랫폼으로도 서버 프로그램을 컴파일해서 배포하는 것을 권장합니다.
  2. 공유기에 들어오고 나가는 통신 데이터를 특정한 컴퓨터의 포트에 매핑하는 기능입니다. 이때 공유기가 받아들이는 포트와 서버 컴퓨터의 포트가 일치할 필요가 없습니다.
  3. * 부분에 게임 이름이 들어갑니다. 가령 당신의 게임 이름이 jumpman인 경우 jumpman.libertygame.work와 같은 주소를 도메인 소유주가 대여합니다.
  4. 멀티플레이어 게임의 제작자가 미성년자라 스스로 도메인 구입이 불가능하며 이메일로 신청하는 과정에서 15세 이상임을 밝히는 데에 동의하는 경우 최대 5년 간 도메인 대여, 스스로 도메인 구매가 가능하나 리버티게임에 배포할 멀티플레이어 게임의 테스트를 위한 도메인을 요청할 경우 3개월 대여를 고려 중입니다. 개인정보 보호를 위해 support@libertyga.me로 이메일 신청을 받으며, 리버티게임:개인정보처리방침을 따라 개인정보를 관리합니다.