acme.sh + Google Cloud DNS 自動更新 Let's Encrypt 服務
安裝 acme.sh 此套件,該套件已有建立好已有提供的 API 功能,如果所採買的網域商裡面有提供 API 介面的話,可以查詢一下怎麼使用,該套件裡面有解說每個 API 要怎麼使用。
安裝 acme.sh 服務
安裝套件很簡單只要一行就完成了
Check this project: https://github.com/Neilpang/acme.sh
curl https://get.acme.sh | sh
Or:
wget -O - https://get.acme.sh | sh
安裝完之後會在 root 目錄下產生一個 .acme.sh 資料夾
安裝 google SDK 套件
首先要先安裝 Google Cloud SDK 套件才能跟 Google Cloud DNS 服務使用, BUBU 使用環境是 CentOS 7 ,所以參考官方 Cloud SDK 手冊
# Update YUM with Cloud SDK repo information:
sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM
[google-cloud-sdk]
name=Google Cloud SDK
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM
新增完之後安裝 SDK 套件
yum install google-cloud-sdk -y
執行 Google Cloud SDK 首次安裝設定服務
執行命令
gcloud init
設定畫面如下
Welcome! This command will take you through the configuration of gcloud.
Your current configuration has been set to: [default]
You can skip diagnostics next time by using the following flag:
gcloud init --skip-diagnostics
Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).
需要跟 google 帳號接合就按下 y 就可以了
You must log in to continue. Would you like to log in (Y/n)? y
將下列網址複製到網頁上去會顯示要登入GCP 服務帳號
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/
輸入登入後畫面上所顯示的 code 碼
Enter verification code:
To take a quick anonymous survey, run:
$ gcloud alpha survey
You are logged in as: [[email protected]].
顯示要控制那個專案例如果是使用 DNS 服務就選擇 DNS
Pick cloud project to use:
[1] wiki
[2] www
[3] dns
[4] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 3
Your current project has been set to: [dns].
輸入 n 就可以了
Do you want to configure a default Compute Region and Zone? (Y/n)? n
設定腳本
再來使用腳本方式 shell script 來更新憑證,產生的憑證會一份是在 acme.sh 目錄下會看到此目錄
acme.sh 每 60 天會自動重新加載這個指令來自動續期憑證,完全不需手動執行任何操作!
P.S 如果你有很多網域想要使用一個憑證是可以的
export CLOUDSDK_ACTIVE_CONFIG_NAME=default
/root/.acme.sh/acme.sh --issue --dns dns_gcloud -d "*.YourDomainName.com" -d "YourDomainName.com" --log \
--cert-file /etc/nginx/ssl/cert.crt \ # 複製憑證到指定的目錄下面
--key-file /etc/nginx/ssl/key.key \ # 複製憑證到指定的目錄下面
--fullchain-file /etc/nginx/ssl/fullchain.crt \ # 複製憑證到指定的目錄下面
--ca-file /etc/nginx/ssl/ca.crt \ # 複製憑證到指定的目錄下面
--reloadcmd "systemctl reload nginx" # 如果是用 Apache 請自己修改
OR
export CLOUDSDK_ACTIVE_CONFIG_NAME=default
/root/.acme.sh/acme.sh --issue --dns dns_gcloud -d "*.YourDomainName.com" -d "YourDomainName.com" --log \
--cert-file /etc/nginx/ssl/cert.pem \ # 複製憑證到指定的目錄下面
--key-file /etc/nginx/ssl/key.pem \ # 複製憑證到指定的目錄下面
--fullchain-file /etc/nginx/ssl/fullchain.pem \ # 複製憑證到指定的目錄下面
--ca-file /etc/nginx/ssl/ca.pem \ # 複製憑證到指定的目錄下面
--reloadcmd "systemctl reload nginx" # 如果是用 Apache 請自己修改
將剛剛手動增加的腳本加入可以執行的權限,命令如下:
chmod a+x 腳本檔
再去執行此腳本之後就結束了。
然後再把產生出來的憑證複製到其他主機上就可以了
自動更新 acme.sh
因 acme.sh 會不定時更新系統資訊,會建議讓系統自動去更新 acme.sh 的資料
手動更新:
acme.sh --upgrade
啟用自動更新:
acme.sh --upgrade --auto-upgrade
禁用自動更新:
acme.sh --upgrade --auto-upgrade 0
停止自動續期憑證
將 -d 後面的修改成不要繼續使用憑證
acme.sh --remove -d xxx.com
補充說明
憑證檔案分別會有 4 個
檔案名稱 | 說明 |
---|---|
cert.pem | 申請網域的憑證 |
chain.pem | Let's Encrypt 的憑證 |
fullchain.pem | cert.pem 及 chain.pem 合併檔案 |
privkey.pem | 申請網域的憑證密鑰 |
強制更新憑證
acme.sh --renew --force -d "*.YourDomainName.com" -d "YourDomainName.com" --dns dns_cf --log
參考相關網頁:
- 使用 acme.sh + Cloudflare 申請免費 Wildcard SSL (Let’s Encrypt)
- acme.sh 官方設定手冊
- Google Cloud SDK Red Hat 和 Centos 快速入門導覽課程
- 手把手教你用 Google Cloud Platform 安裝免費且快速的 WordPress 網享並使用 Ubuntu 18.04,LAMP,Nginx,Varnish和Redis 加速你的網站(一年300美金的免費額度可以使用)|WordPress
- 使用acme.sh部署、更新Let's Encrypt證書