6 min read

Google Trust SSL/TLS 인증서 무료로 발급하기

개요

acme.sh를 사용하여 Google Public CA TLS 인증서를 발급하는 가이드입니다.

  1. 필요한 정보를 acme.sh에 전달하고 인증서 생성 요청을 합니다.
  2. acme.sh에서 로컬에 등록된 Cloudflare API 토큰을 가지고 DNS 인증을 진행합니다.
  3. Cloudflare를 통해 DNS TXT Record 등록이 되고 성공적으로 인증을 완료하여 도메인 소유자 인증 과정을 마쳤습니다.
  4. 싱글인증서 및 와일드카드 인증서 발급 정보를 Google Trust Services에 전달하여 SSL 인증서 생성 요청을 진행합니다.
  5. 성공적으로 인증서가 생성이 되고 결과값을 acme.sh에 전달합니다.
  6. Google Trust Service에서 전달한 정보를 acme.sh에서 받아 인증서 파일을 사용자에게 전달합니다.

1. acme.sh 설치

💡
acme.sh의 설치 가이드를 참고하여 작성하였습니다.
  1. 아래 세가지 방법 중 하나를 선택하여 설치를 진행합니다.
curl https://get.acme.sh | sh -s email=my@example.com

my@example.com 부분에 사용할 이메일 주소를 입력합니다.

또는

wget -O -  https://get.acme.sh | sh -s email=my@example.com

my@example.com 부분에 사용할 이메일 주소를 입력합니다.

또는

git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m my@example.com

# 해당 명령어를 통해 설치한다면 cron을 등록해야합니다.
crontab -e

# 경로에 맞게 아래 내용을 cron에 추가
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null

my@exmaple.com 부분에 사용할 이메일 주소를 입력합니다.

2. EAB Key ID 및 HMAC 코드 발급

💡
Google Cloud Blog를 참고하여 작성하였습니다.
  1. Google Cloud Console에 접속합니다.
  2. 로그인 후 우측 상단 콘솔버튼을 눌러 Google Cloud 웹 콘솔로 이동합니다.
  1. 접속 후 우측 상단 CLI 아이콘을 눌러 Google Cloud Shell를 실행합니다.

기존 Google Cloud를 사용하지 않으셨다면 프로젝트 생성까지 완료한 후 진행해주시면 됩니다.

  1. Google Cloud Shell에서 아래 명령어를 입력하고 결과 값을 복사합니다.
# Defaule Config Setting
gcloud config set project <project ID>

# Project Role Create & Binding
gcloud projects add-iam-policy-binding <project ID> \
  --member=user:<USER EMAIL> \
  --role=roles/publicca.externalAccountKeyCreator

# Request a key
gcloud alpha publicca external-account-keys create

<project ID> 와 <USER EMAIL>은 본인 계정 정보를 상황에 맞게 넣어줍니다.

  1. acme.sh에 4번에서 복사한 EAB 와 HMAC를 등록합니다.
acme.sh  --register-account  -m  myemail@example.com --server google \
    --eab-kid xxxxxxx \
    --eab-hmac-key xxxxxxx

myemail@exmaple.com, --eab-kid, --eab-hmac-key 에 알맞은 값을 입력합니다.

3. Cloudflare API 키 등록

💡
acme.sh의 설치 가이드를 참고하여 작성하였습니다.
사전에 Cloudflare에 DNS를 등록해야 진행하실 수 있습니다.
  1. Cloudflare의 User API Tokens 페이지로 이동하여 "Create Token"을 눌러 토큰을 생성합니다.
  1. Custom Token을 생성합니다.
  1. 각 항목에 세부사항을 입력합니다.

: 생성될 토큰 이름을 정합니다.
: Zone - DNS - Edit 으로 설정합니다.
: 해당 토큰에 권한을 부여할 도메인을 범위 단위로 또는 각각 지정할 수 있습니다.
: 토큰 사용 가능한(또는 불가능한) IP를 지정할 수 있습니다.
: 토큰 사용 시작일, 만료일을 지정할 수 있습니다.

입력 후 Continue to summary를 누르고 생성된 Token 값을 복사합니다.

  1. Cloudflare의 도메인 "Overview" 메뉴로 이동하고 우측 하단의 값을 복사합니다.
Zone ID와 Account ID를 복사합니다.
  1. 서버에서 acme.sh 명령어를 사용할 사용자의 bashrc 파일(zsh를 사용한다면 zshrc 파일 처럼 각 사용자의 쉘에 맞게)에 내용 추가
# cloudflare config
export CF_Zone_ID="YYYYYYYYYYYYYYYYYYYYYYYYYYY"
export CF_Account_ID="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
export CF_Token="YYYYYYYYYYYYYYYYYYYYYY"
export CF_Email="myemail@example.com"

추가 후 source 명령어로 적용하는 것 잊지마세요!

CF_Zone_ID : 4번에서 복사한 값을 붙여넣습니다.
CF_Account_ID : 4번에서 복사한 값을 붙여넣습니다.
CF_Token : 3번에서 복사한 값을 붙여넣습니다.
CF_Email : Cloudflare 계정의 Email을 적습니다.


4. 인증서 발급

  • 발급 명령어 수행
acme.sh --issue --server google \
  -d hons.io \
  -d "*.hons.io" \
  --dns dns_cf \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please

도메인은 본인의 도메인에 맞게 수정합니다.

  • 발급된 인증서 폴더에 복사
acme.sh --install-cert \
  -d hons.io \
  -d "*.hons.io" \
  --cert-file /path/to/certification-dir/cert.pem \
  --key-file /path/to/certification-dir/key.pem

cert 파일과 key 파일이 저장될 디렉토리와 파일을 정의하세요


5. 발급 완료 및 적용

자신이 사용하는 Application 또는 Reverse Proxy에 적용하시면 됩니다.

Google Trust 인증서가 적용된 모습