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