mirror of
https://github.com/acmesh-official/acme.sh.git
synced 2025-05-13 23:32:43 +00:00
support async finalize order
This commit is contained in:
parent
e128b4b6bf
commit
38af934407
72
acme.sh
72
acme.sh
@ -3075,6 +3075,7 @@ _on_before_issue() {
|
|||||||
_info "Standalone mode."
|
_info "Standalone mode."
|
||||||
if [ -z "$Le_HTTPPort" ]; then
|
if [ -z "$Le_HTTPPort" ]; then
|
||||||
Le_HTTPPort=80
|
Le_HTTPPort=80
|
||||||
|
_cleardomainconf "Le_HTTPPort"
|
||||||
else
|
else
|
||||||
_savedomainconf "Le_HTTPPort" "$Le_HTTPPort"
|
_savedomainconf "Le_HTTPPort" "$Le_HTTPPort"
|
||||||
fi
|
fi
|
||||||
@ -4218,39 +4219,66 @@ $_authorizations_map"
|
|||||||
der="$(_getfile "${CSR_PATH}" "${BEGIN_CSR}" "${END_CSR}" | tr -d "\r\n" | _url_replace)"
|
der="$(_getfile "${CSR_PATH}" "${BEGIN_CSR}" "${END_CSR}" | tr -d "\r\n" | _url_replace)"
|
||||||
|
|
||||||
if [ "$ACME_VERSION" = "2" ]; then
|
if [ "$ACME_VERSION" = "2" ]; then
|
||||||
|
_info "Lets finalize the order, Le_OrderFinalize: $Le_OrderFinalize"
|
||||||
|
if ! _send_signed_request "${Le_OrderFinalize}" "{\"csr\": \"$der\"}"; then
|
||||||
|
_err "Sign failed."
|
||||||
|
_on_issue_err "$_post_hook"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [ "$code" != "200" ]; then
|
||||||
|
_err "Sign failed, finalize code is not 200."
|
||||||
|
_err "$response"
|
||||||
|
_on_issue_err "$_post_hook"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
Le_LinkOrder="$(echo "$responseHeaders" | grep -i '^Location.*$' | _tail_n 1 | tr -d "\r\n" | cut -d " " -f 2)"
|
||||||
|
if [ -z "$Le_LinkOrder" ]; then
|
||||||
|
_err "Sign error, can not get order link location header"
|
||||||
|
_err "responseHeaders" "$responseHeaders"
|
||||||
|
_on_issue_err "$_post_hook"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
_savedomainconf "Le_LinkOrder" "$Le_LinkOrder"
|
||||||
|
|
||||||
_link_cert_retry=0
|
_link_cert_retry=0
|
||||||
_MAX_CERT_RETRY=5
|
_MAX_CERT_RETRY=5
|
||||||
while [ "$_link_cert_retry" -lt "$_MAX_CERT_RETRY" ]; do
|
while [ -z "$Le_LinkCert" ] && [ "$_link_cert_retry" -lt "$_MAX_CERT_RETRY" ]; do
|
||||||
if ! _send_signed_request "${Le_OrderFinalize}" "{\"csr\": \"$der\"}"; then
|
if _contains "$response" "\"status\":\"valid\""; then
|
||||||
_err "Sign failed."
|
_debug "Order status is valid."
|
||||||
_on_issue_err "$_post_hook"
|
Le_LinkCert="$(echo "$response" | tr -d '\r\n' | _egrep_o '"certificate" *: *"[^"]*"' | cut -d '"' -f 4)"
|
||||||
return 1
|
_debug Le_LinkCert "$Le_LinkCert"
|
||||||
fi
|
if [ -z "$Le_LinkCert" ]; then
|
||||||
if [ "$code" != "200" ]; then
|
_err "Sign error, can not find Le_LinkCert"
|
||||||
_err "Sign failed, code is not 200."
|
_err "$response"
|
||||||
|
_on_issue_err "$_post_hook"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
elif _contains "$response" "\"processing\""; then
|
||||||
|
_info "Order status is processing, lets sleep and retry."
|
||||||
|
_sleep 2
|
||||||
|
else
|
||||||
|
_err "Sign error, wrong status"
|
||||||
_err "$response"
|
_err "$response"
|
||||||
_on_issue_err "$_post_hook"
|
_on_issue_err "$_post_hook"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
Le_LinkCert="$(echo "$response" | tr -d '\r\n' | _egrep_o '"certificate" *: *"[^"]*"' | cut -d '"' -f 4)"
|
if ! _send_signed_request "$Le_LinkOrder"; then
|
||||||
_debug Le_LinkCert "$Le_LinkCert"
|
_err "Sign failed, can not post to Le_LinkOrder cert:$Le_LinkOrder."
|
||||||
_tempSignedResponse="$response"
|
_err "$response"
|
||||||
if [ -z "$Le_LinkCert" ]; then
|
_on_issue_err "$_post_hook"
|
||||||
if ! _contains "$response" "\"processing\""; then
|
return 1
|
||||||
_err "Sign error, wrong status"
|
|
||||||
_err "$response"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$Le_LinkCert" ]; then
|
|
||||||
break;
|
|
||||||
fi
|
fi
|
||||||
_link_cert_retry="$(_math $_link_cert_retry + 1)"
|
_link_cert_retry="$(_math $_link_cert_retry + 1)"
|
||||||
_sleep 5
|
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "$Le_LinkCert" ]; then
|
if [ -z "$Le_LinkCert" ]; then
|
||||||
_err "Sign failed, can not get Le_LinkCert."
|
_err "Sign failed, can not get Le_LinkCert, retry time limit."
|
||||||
_err "$response"
|
_err "$response"
|
||||||
|
_on_issue_err "$_post_hook"
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
|
_info "Download cert, Le_LinkCert: $Le_LinkCert"
|
||||||
if ! _send_signed_request "$Le_LinkCert"; then
|
if ! _send_signed_request "$Le_LinkCert"; then
|
||||||
_err "Sign failed, can not download cert:$Le_LinkCert."
|
_err "Sign failed, can not download cert:$Le_LinkCert."
|
||||||
_err "$response"
|
_err "$response"
|
||||||
@ -4269,7 +4297,7 @@ $_authorizations_map"
|
|||||||
_end_n="$(_math $_end_n + 1)"
|
_end_n="$(_math $_end_n + 1)"
|
||||||
sed -n "${_end_n},9999p" "$CERT_FULLCHAIN_PATH" >"$CA_CERT_PATH"
|
sed -n "${_end_n},9999p" "$CERT_FULLCHAIN_PATH" >"$CA_CERT_PATH"
|
||||||
fi
|
fi
|
||||||
response="$_tempSignedResponse"
|
|
||||||
else
|
else
|
||||||
if ! _send_signed_request "${ACME_NEW_ORDER}" "{\"resource\": \"$ACME_NEW_ORDER_RES\", \"csr\": \"$der\"}" "needbase64"; then
|
if ! _send_signed_request "${ACME_NEW_ORDER}" "{\"resource\": \"$ACME_NEW_ORDER_RES\", \"csr\": \"$der\"}" "needbase64"; then
|
||||||
_err "Sign failed. $response"
|
_err "Sign failed. $response"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user