mirror of
https://github.com/acmesh-official/acme.sh.git
synced 2025-05-08 20:02:45 +00:00
Add Amazon Certificate Manager deploy hook
This commit is contained in:
parent
293b258121
commit
48d932baba
80
deploy/aws_acm.sh
Normal file
80
deploy/aws_acm.sh
Normal file
@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#Here is a script to deploy cert to Amazon Certificate Manager.
|
||||
|
||||
#returns 0 means success, otherwise error.
|
||||
|
||||
# shellcheck source=common/aws.sh
|
||||
. "$LE_WORKING_DIR/common/aws.sh"
|
||||
|
||||
######## Public functions #####################
|
||||
|
||||
#domain keyfile certfile cafile fullchain
|
||||
aws_acm_deploy() {
|
||||
_cdomain="$1" _ckey="$2" _ccert="$3" _cca="$4" _cfullchain="$5"
|
||||
|
||||
_debug _cdomain "$_cdomain"
|
||||
_debug _ckey "$_ckey"
|
||||
_debug _ccert "$_ccert"
|
||||
_debug _cca "$_cca"
|
||||
_debug _cfullchain "$_cfullchain"
|
||||
|
||||
_regions="${AWS_ACM_REGIONS:-$(_readdomainconf Aws_Acm_Regions)}"
|
||||
|
||||
if [ -z "$_regions" ]; then
|
||||
_err "no ACM regions to use when deploying $_cdomain"
|
||||
return 1
|
||||
fi
|
||||
|
||||
_savedomainconf Aws_Acm_Regions "$_regions"
|
||||
|
||||
_ret=0
|
||||
for _region in $(printf %s "$_regions" | tr ',' ' '); do
|
||||
_debug _region "$_region"
|
||||
|
||||
_arn="$(_get_arn "$_cdomain" "$_region")"
|
||||
_debug2 _arn "$_arn"
|
||||
|
||||
_json="{$(
|
||||
_fmt_json \
|
||||
CertificateArn "$_arn" \
|
||||
Certificate "$(_base64 <"$_ccert")" \
|
||||
CertificateChain "$(_base64 <"$_cca")" \
|
||||
PrivateKey "$(_base64 <"$_ckey")"
|
||||
)}"
|
||||
_secure_debug2 _json "$_json"
|
||||
|
||||
if ! _aws acm ImportCertificate "$_region" "$_json" >/dev/null; then
|
||||
_err "unable to deploy $_cdomain to ACM in $_region"
|
||||
_ret=2
|
||||
fi
|
||||
done
|
||||
|
||||
return $_ret
|
||||
}
|
||||
|
||||
_get_arn() {
|
||||
_page='"MaxItems": 20'
|
||||
_next="$_page"
|
||||
while [ "$_next" ]; do
|
||||
resp="$(_aws acm ListCertificates "$2" "{$_next,$_page}")"
|
||||
[ "$?" -eq 0 ] || return 2
|
||||
printf %s "$resp" |
|
||||
_normalizeJson |
|
||||
tr '{}' '\n' |
|
||||
grep -F "\"DomainName\":\"$1\"" |
|
||||
_egrep_o "arn:aws:acm:$2:[^\"]+" |
|
||||
grep "^arn:aws:acm:$2:"
|
||||
[ "$?" -eq 0 ] && return
|
||||
_next="$(printf %s "$resp" | _egrep_o '"NextToken":"[^"]+"')"
|
||||
_debug3 _next "$_next"
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
_fmt_json() {
|
||||
while [ "$#" -gt 1 ]; do
|
||||
[ "$2" ] && printf '"%s":"%s"\n' "$1" "$2"
|
||||
shift 2
|
||||
done | paste -sd ','
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user