Google Trust SSL/TLS 인증서 무료로 발급하기
개요
acme.sh를 사용하여 Google Public CA TLS 인증서를 발급하는 가이드입니다.

- 필요한 정보를 acme.sh에 전달하고 인증서 생성 요청을 합니다.
- acme.sh에서 로컬에 등록된 Cloudflare API 토큰을 가지고 DNS 인증을 진행합니다.
- Cloudflare를 통해 DNS TXT Record 등록이 되고 성공적으로 인증을 완료하여 도메인 소유자 인증 과정을 마쳤습니다.
- 싱글인증서 및 와일드카드 인증서 발급 정보를 Google Trust Services에 전달하여 SSL 인증서 생성 요청을 진행합니다.
- 성공적으로 인증서가 생성이 되고 결과값을 acme.sh에 전달합니다.
- Google Trust Service에서 전달한 정보를 acme.sh에서 받아 인증서 파일을 사용자에게 전달합니다.
1. acme.sh 설치
- 아래 세가지 방법 중 하나를 선택하여 설치를 진행합니다.
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 Console에 접속합니다.
- 로그인 후 우측 상단 콘솔버튼을 눌러 Google Cloud 웹 콘솔로 이동합니다.

- 접속 후 우측 상단 CLI 아이콘을 눌러 Google Cloud Shell를 실행합니다.
기존 Google Cloud를 사용하지 않으셨다면 프로젝트 생성까지 완료한 후 진행해주시면 됩니다.

- 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>은 본인 계정 정보를 상황에 맞게 넣어줍니다.
- 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 키 등록
사전에 Cloudflare에 DNS를 등록해야 진행하실 수 있습니다.
- Cloudflare의 User API Tokens 페이지로 이동하여 "Create Token"을 눌러 토큰을 생성합니다.

- Custom Token을 생성합니다.

- 각 항목에 세부사항을 입력합니다.

① : 생성될 토큰 이름을 정합니다.
② : Zone
- DNS
- Edit
으로 설정합니다.
③ : 해당 토큰에 권한을 부여할 도메인을 범위 단위로 또는 각각 지정할 수 있습니다.
④ : 토큰 사용 가능한(또는 불가능한) IP를 지정할 수 있습니다.
⑤ : 토큰 사용 시작일, 만료일을 지정할 수 있습니다.
입력 후 Continue to summary를 누르고 생성된 Token 값을 복사합니다.
- Cloudflare의 도메인 "Overview" 메뉴로 이동하고 우측 하단의 값을 복사합니다.

- 서버에서 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에 적용하시면 됩니다.

Member discussion