獲取由 Google 頒發的 SSL 憑證

前言

世界上可以拿到免費憑證的地方很多,像是大家熟知的 Let’s Encrypt、ZeroSSL 都是。但大家知道其實 Google 自己也有自己的憑證機構嗎?

他叫做 Google Trust Services,你可以在許多 Google 服務又或是協作平台的地方看到由他產出的憑證。但是我們可以自己向他申請嗎?當然可以,而且是完全免費的。這篇文章就是紀錄下取得過程。

安裝 Google Cloud CLI

獲取的過程中,我們會與 Google Cloud 的 CLI 一直互動,因此我們要在電腦上安裝 Google Cloud CLI。你可以在 這個連結 找到安裝方法。

使用 Google Cloud CLI

安裝完之後,應該可以在你的桌面找到 Google Cloud SDK Shell。我們將他打開,並使用以下命令來初始化,他會要求你登入 Google 帳號。

gcloud init

接著我們新建一個專案,只建立專案是不用付錢的。而後面的 your-project-123 則是專案名稱,你可以改成你喜歡的。

gcloud projects create your-project-123

新建完之後,讓 Google Cloud CLI 知道,我們要選取這個專案。

gcloud config set project your-project-123

在這個專案啟用 Public CA API

gcloud services enable publicca.googleapis.com

請求一個 EAB 與 HMAC 密鑰

gcloud publicca external-account-keys create

他將會返回兩個字串 b64MacKeyKeyId。記住他們,待會會用到。

001.jpg

使用 Certbot

我們要使用 ACME 客戶端來向 Google 發出要求。常見的 ACME 客戶端有 Certbot、acme.sh 等。這篇文章將會使用 Certbot。

至於 Certbot 的安裝方式,可以參考我 先前的文章

接著,我們需要向 ACME 註冊帳號。將 email 的地方改成你的,eab-kid 就是先前獲得的 KeyIdeab-hmac-key 則是 b64MacKey

certbot register \
    --email "your@email.com" \
    --no-eff-email \
    --server "https://dv.acme-v02.api.pki.goog/directory" \
    --eab-kid "EAB_KID" \
    --eab-hmac-key "EAB_HMAC_KEY"

完成後,我們就可以開始要求憑證啦!將 domains 的地方改變成你要申請的網域。

certbot certonly \
    --manual \
    --preferred-challenges dns \
    --server "https://dv.acme-v02.api.pki.goog/directory" \
    --domains "your.domain.com"

他會要求你在 DNS 上新增一筆 TXT 紀錄。完成新增後,就回來按下 Enter 繼續驗證。

002.jpg

你的憑證申請完成啦,Certbot 也告訴你存放的路徑囉!去那就能找到了。

003.jpg

刪除專案

如果專案不需要再使用了,你可以透過以下命令來刪除這個專案。

gcloud projects delete your-project-123

結語

這就是獲取 Google 的 SSL 憑證過程啦!其實當初寫這篇的契機只是因為我覺得大家都使用 Let’s Encrypt 的憑證很不獨特,想要找一個由大公司所頒發的憑證。不過也有人說 Google 發出來的憑證相容性很好,這點我就不是很清楚了,大家可以自己嘗試看看!