SSL憑證 自動簽名 神器 acme.sh
使用ACME 調用AWS Route53 簽名憑證 (參考)
Step 1 新增 策略規則
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:GetHostedZone",
"route53:ListHostedZones",
"route53:ListHostedZonesByName",
"route53:GetHostedZoneCount",
"route53:ChangeResourceRecordSets",
"route53:ListResourceRecordSets"
],
"Resource": "*"
}
]
}
Step 2 創建策略規則後
提供簽名範本 在acme.sh 當前目錄中創建一個shell即可直接運行
#!/bin/sh
DIR="$( cd "$( dirname "$0" )" && pwd )"
export AWS_ACCESS_KEY_ID=""
export AWS_SECRET_ACCESS_KEY=""
$DIR/acme.sh --issue -d "*.demo.io" -d "demo.io" --dns dns_aws
# 清除失敗暫存
./acme.sh --remove -d demo.co
阿里雲DNS簽名
若要讓acme 能透過DNS 簽證 需要先在阿里雲創建一個用戶,並且將給予適當的權限,才能透過 API KEY 去新增刪除修改 域名紀錄值。
創建好用戶後必須要給予該用戶DNS 權限,直接給予 「AliyunDNSFullAccess」。
之後就可以透過 以下命令 做一個shell 直接簽證。
# 設定mail
./acme.sh --install -m [email protected]
# 切換證書源
./acme.sh --set-default-ca --server letsencrypt
DIR="$( cd "$( dirname "$0" )" && pwd )"
export Ali_Key=""
export Ali_Secret=""
echo "--- start dns add & check ----"
$DIR/acme.sh --issue --dns dns_ali -d *.test.com -d test.com
# 最後一行 可以看情況 若無nginx 可以不用加上
echo "--- install cert & reload nginx ----"
$DIR/acme.sh --installcert -d *.test.com -d test.com \
--key-file /etc/nginx/ssls/test.com/key.pem \
--fullchain-file /etc/nginx/ssls/test.com/cert.pem \
--reloadcmd "nginx -s reload"
透過acme 直接簽發憑證(DNS)
./acme.sh --issue --dns -d "*.test.com" -d "test.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please
./acme.sh --renew -d "*.test.com" -d "test.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please
透過acme 直接簽發憑證(Webroot mode)
Step 1 Download & Install
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m [email protected]
Step 2 切換 證書源頭
ZEROSSL
./acme.sh --set-default-ca --server zerossl
letsencrypt
./acme.sh --set-default-ca --server letsencrypt
Step 3 簽證
31 Webroot mode
./acme.sh --issue -d test.com -d www.test.com -w /data/htdocs/jyg/http
Step 4 安裝證書
簽證完的憑證,請勿直接使用當前目錄底下,若往後acme更新後可能會更新檔案結構而造成 憑證遺失問題
./acme.sh --installcert -d "*.test.com" -d "test.com" \
--key-file /data/apps/nginx/ssls/test.com/key.pem \
--fullchain-file /data/apps/nginx/ssls/test.com/cert.pem \
--reloadcmd "service nginx force-reload"
// 註 最後一行 reloadcmd 若使用源安裝 可使用 若不是使用源安裝就無法
acme 常用指令
查看目前已簽名的憑證 --list
重新簽名 --renew -d [域名]--force