Skip to content
Merged

sync #6745

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
d5b5bce
support ARI, not finished yet
Dec 10, 2024
40dd085
Merge pull request #6159 from acmesh-official/dev
neilpang Dec 10, 2024
5ddffc9
fix format
Dec 10, 2024
ee661e5
fix format
Dec 10, 2024
7ca8a9e
QUIC.cloud support for acme.sh
rperper Oct 24, 2025
e25e30d
Added wiki doc
rperper Oct 27, 2025
68eb6de
Removed false wiki page
rperper Oct 27, 2025
692a21e
Merge branch 'acmesh-official:master' into QUIC.cloud
rperper Nov 18, 2025
9a74c86
Commit to force initial test
rperper Nov 19, 2025
2c9ba9b
Merge remote-tracking branch 'upstream/dev' into QUIC.cloud
rperper Nov 20, 2025
9381835
QUIC.cloud support for acme.sh
rperper Oct 24, 2025
72a6a5c
Added wiki doc
rperper Oct 27, 2025
cf5fd40
Removed false wiki page
rperper Oct 27, 2025
d0d97a4
Commit to force initial test
rperper Nov 19, 2025
894dfdd
Merge branch 'QUIC.cloud' of github.com:rperper/acme.sh into QUIC.cloud
rperper Nov 20, 2025
b500ac3
Updated secret and dns_qc.sh
rperper Nov 20, 2025
0f42b06
Trying again to fix shfmt error
rperper Nov 21, 2025
90d2ff8
Better fixes for shfmt errors
rperper Nov 21, 2025
5e76ea8
Additional shfmt issues
rperper Nov 21, 2025
ded539b
Additional shfmt issues
rperper Nov 21, 2025
20ef8cd
Additional shfmt issues
rperper Nov 21, 2025
88e9681
Additional shfmt issues
rperper Nov 21, 2025
65292b0
Merge branch 'acmesh-official:dev' into dev
rperper Dec 5, 2025
d393063
Updated secrets and put back guards
rperper Dec 5, 2025
67a389c
Minor change and setup secrets again
rperper Dec 5, 2025
6b6d22c
shfmt updates
rperper Dec 5, 2025
a1857af
Update error message and secrets
rperper Dec 5, 2025
ed1bd01
Save account information differently
rperper Dec 5, 2025
875cf05
Submit dns_qc.sh for review
rperper Dec 8, 2025
b0088c8
Merge branch 'acmesh-official:dev' into dev
rperper Dec 8, 2025
5fcca7c
Retry correct commit
rperper Dec 8, 2025
e5dea48
Retry pull request with HTTPS_INSECURE=1
rperper Dec 9, 2025
1a2071a
Merge branch 'acmesh-official:dev' into dev
rperper Dec 9, 2025
5017c12
Trying verification again
rperper Dec 11, 2025
6f66e29
Yet another try
rperper Dec 11, 2025
7fc4522
Merge branch 'acmesh-official:dev' into dev
rperper Dec 22, 2025
1d26d4f
Detect missing jq
rperper Dec 22, 2025
94783f4
Retry to pass workflow
rperper Dec 23, 2025
f1aac43
Retry for workflow
rperper Dec 23, 2025
f4a575f
bug fixed
jwaterwater Dec 25, 2025
1012641
Merge branch 'dev' into master
jwaterwater Dec 25, 2025
d795cb4
Merge pull request #6717 from acmesh-official/ari
neilpang Dec 27, 2025
21d52b5
Store pfx password base64 encoded
h-haaks Dec 30, 2025
e260b86
Merge branch 'acmesh-official:master' into master
jwaterwater Dec 30, 2025
66ef351
Merge branch 'dev' of https://github.com/rperper/acme.sh into dev
rperper Dec 30, 2025
162cfeb
Removed jq requirement
rperper Dec 30, 2025
e031457
shfmt fixes
rperper Dec 30, 2025
185d92f
shfmt fixes
rperper Dec 30, 2025
0b66acf
shfmt fixes
rperper Dec 30, 2025
b4f30ff
Updated for shfmt
rperper Dec 30, 2025
397c060
Double quote for globbing
rperper Dec 30, 2025
778b4a3
Missed several double quote issues
rperper Dec 30, 2025
f9ffdbe
Initialize record_id
rperper Dec 30, 2025
cf2f9ef
Missed additional quotes
rperper Dec 30, 2025
6a37f23
Ran shfmt locally
rperper Dec 30, 2025
2ad984d
feat(qiniu): make forceHttps configurable via environment variable
Jan 1, 2026
b08bb2e
Fix list command for POSIX sh by avoiding brace expansion
jdevera Jan 2, 2026
dc6a996
Merge pull request #6731 from jdevera/posix_globs_for_list
neilpang Jan 2, 2026
06d9ca6
Merge pull request #6728 from jwaterwater/feat/qiniu-force-https-config
neilpang Jan 2, 2026
045e4de
use openindiana-vm@v1
Jan 2, 2026
94c670a
Remove asterisks and line breaks
JensSpanier Jan 4, 2026
877cbe0
Add VirakCloud DNS API support with add and remove TXT record functions
moaminsharifi Jan 4, 2026
ef03524
Add VirakCloud DNS API support
moaminsharifi Jan 4, 2026
70462b5
run `~/shfmt -l -w -i 2 dnsapi/dns_virakcloud.sh` and Remove unnecess…
moaminsharifi Jan 4, 2026
ca94221
Merge branch 'dev' into master
moaminsharifi Jan 4, 2026
9bf5179
Merge pull request #6739 from moaminsharifi/master
neilpang Jan 5, 2026
4b278dc
Merge pull request #6735 from JensSpanier/dev
neilpang Jan 5, 2026
35f99c5
add debug wiki
Jan 5, 2026
2092d60
fix https://github.com/acmesh-official/acme.sh/issues/6736#issuecomme…
Jan 5, 2026
6a9776b
Merge pull request #6631 from rperper/dev
neilpang Jan 5, 2026
188aa51
Merge pull request #6724 from h-haaks/base64-encode-pfx-password
neilpang Jan 5, 2026
903a539
fix bugs
Jan 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 39 additions & 5 deletions .github/workflows/DNS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,11 @@ jobs:
fi
cd ../acmetest
./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"



Expand Down Expand Up @@ -302,7 +306,11 @@ jobs:
fi
cd ../acmetest
./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"



Expand Down Expand Up @@ -354,7 +362,11 @@ jobs:
fi
cd ../acmetest
./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"



Expand Down Expand Up @@ -406,7 +418,11 @@ jobs:
fi
cd ../acmetest
./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"



Expand Down Expand Up @@ -464,6 +480,11 @@ jobs:
fi
cd ../acmetest
./letest.sh
- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"


Omnios:
Expand Down Expand Up @@ -513,6 +534,12 @@ jobs:
fi
cd ../acmetest
./letest.sh
- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"



OpenIndiana:
Expand All @@ -539,7 +566,7 @@ jobs:
- uses: actions/checkout@v4
- name: Clone acmetest
run: cd .. && git clone --depth=1 https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
- uses: vmactions/openindiana-vm@v0
- uses: vmactions/openindiana-vm@v1
with:
envs: 'TEST_DNS TestingDomain TEST_DNS_NO_WILDCARD TEST_DNS_NO_SUBDOMAIN TEST_DNS_SLEEP CASE TEST_LOCAL DEBUG http_proxy https_proxy HTTPS_INSECURE TokenName1 TokenName2 TokenName3 TokenName4 TokenName5 ${{ secrets.TokenName1}} ${{ secrets.TokenName2}} ${{ secrets.TokenName3}} ${{ secrets.TokenName4}} ${{ secrets.TokenName5}}'
sync: nfs
Expand All @@ -562,5 +589,12 @@ jobs:
fi
cd ../acmetest
./letest.sh
- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"




6 changes: 5 additions & 1 deletion .github/workflows/DragonFlyBSD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,9 @@ jobs:
run: |
cd ../acmetest \
&& ./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"

6 changes: 5 additions & 1 deletion .github/workflows/FreeBSD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,9 @@ jobs:
run: |
cd ../acmetest \
&& ./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"

8 changes: 6 additions & 2 deletions .github/workflows/NetBSD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,9 @@ jobs:
run: |
cd ../acmetest \
&& ./letest.sh


- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"

6 changes: 5 additions & 1 deletion .github/workflows/Omnios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,9 @@ jobs:
run: |
cd ../acmetest \
&& ./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"

6 changes: 5 additions & 1 deletion .github/workflows/OpenBSD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,9 @@ jobs:
run: |
cd ../acmetest \
&& ./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"

8 changes: 6 additions & 2 deletions .github/workflows/OpenIndiana.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
run: echo "TestingDomain=${{steps.tunnel.outputs.server}}" >> $GITHUB_ENV
- name: Clone acmetest
run: cd .. && git clone --depth=1 https://github.com/acmesh-official/acmetest.git && cp -r acme.sh acmetest/
- uses: vmactions/openindiana-vm@v0
- uses: vmactions/openindiana-vm@v1
with:
envs: 'TEST_LOCAL TestingDomain TEST_ACME_Server CA_ECDSA CA CA_EMAIL TEST_PREFERRED_CHAIN ACME_USE_WGET'
nat: |
Expand All @@ -71,5 +71,9 @@ jobs:
run: |
cd ../acmetest \
&& ./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"

6 changes: 5 additions & 1 deletion .github/workflows/Solaris.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,9 @@ jobs:
run: |
cd ../acmetest \
&& ./letest.sh

- name: onError
if: ${{ failure() }}
run: |
echo "See how to debug in VM:"
echo "https://github.com/acmesh-official/acme.sh/wiki/debug-in-VM"

56 changes: 50 additions & 6 deletions acme.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1466,7 +1466,7 @@ _toPkcs() {
${ACME_OPENSSL_BIN:-openssl} pkcs12 -export -out "$_cpfx" -inkey "$_ckey" -in "$_ccert" -certfile "$_cca"
fi
if [ "$?" = "0" ]; then
_savedomainconf "Le_PFXPassword" "$pfxPassword"
_savedomainconf "Le_PFXPassword" "$pfxPassword" "base64"
fi

}
Expand Down Expand Up @@ -2783,6 +2783,7 @@ _clearAPI() {
ACME_REVOKE_CERT=""
ACME_NEW_NONCE=""
ACME_AGREEMENT=""
ACME_RENEWAL_INFO=""
}

#server
Expand Down Expand Up @@ -2827,13 +2828,17 @@ _initAPI() {
ACME_AGREEMENT=$(echo "$response" | _egrep_o 'termsOfService" *: *"[^"]*"' | cut -d '"' -f 3)
export ACME_AGREEMENT

ACME_RENEWAL_INFO=$(echo "$response" | _egrep_o 'renewalInfo" *: *"[^"]*"' | cut -d '"' -f 3)
export ACME_RENEWAL_INFO

_debug "ACME_KEY_CHANGE" "$ACME_KEY_CHANGE"
_debug "ACME_NEW_AUTHZ" "$ACME_NEW_AUTHZ"
_debug "ACME_NEW_ORDER" "$ACME_NEW_ORDER"
_debug "ACME_NEW_ACCOUNT" "$ACME_NEW_ACCOUNT"
_debug "ACME_REVOKE_CERT" "$ACME_REVOKE_CERT"
_debug "ACME_AGREEMENT" "$ACME_AGREEMENT"
_debug "ACME_NEW_NONCE" "$ACME_NEW_NONCE"
_debug "ACME_RENEWAL_INFO" "$ACME_RENEWAL_INFO"
if [ "$ACME_NEW_ACCOUNT" ] && [ "$ACME_NEW_ORDER" ]; then
return 0
fi
Expand Down Expand Up @@ -4465,7 +4470,7 @@ issue() {
Le_NextRenewTime=$(_readdomainconf Le_NextRenewTime)
_debug Le_NextRenewTime "$Le_NextRenewTime"
if [ -z "$FORCE" ] && [ "$Le_NextRenewTime" ] && [ "$(_time)" -lt "$Le_NextRenewTime" ]; then
_valid_to_saved=$(_readdomainconf Le_Valid_to)
_valid_to_saved=$(_readdomainconf Le_Valid_To)
if [ "$_valid_to_saved" ] && ! _startswith "$_valid_to_saved" "+"; then
_info "The domain is set to be valid to: $_valid_to_saved"
_info "It cannot be renewed automatically"
Expand Down Expand Up @@ -5450,10 +5455,10 @@ $_authorizations_map"
_savedomainconf "Le_NextRenewTime" "$Le_NextRenewTime"

#convert to pkcs12
Le_PFXPassword="$(_readdomainconf Le_PFXPassword)"
if [ "$Le_PFXPassword" ]; then
_toPkcs "$CERT_PFX_PATH" "$CERT_KEY_PATH" "$CERT_PATH" "$CA_CERT_PATH" "$Le_PFXPassword"
fi
export CERT_PFX_PATH

if [ "$_real_cert$_real_key$_real_ca$_reload_cmd$_real_fullchain" ]; then
_savedomainconf "Le_RealCertPath" "$_real_cert"
Expand Down Expand Up @@ -5563,6 +5568,10 @@ renew() {
Le_RenewHook="$(_readdomainconf Le_RenewHook)"
Le_Preferred_Chain="$(_readdomainconf Le_Preferred_Chain)"
Le_Certificate_Profile="$(_readdomainconf Le_Certificate_Profile)"
Le_Valid_From="$(_readdomainconf Le_Valid_From)"
Le_Valid_To="$(_readdomainconf Le_Valid_To)"
Le_ExtKeyUse="$(_readdomainconf Le_ExtKeyUse)"

# When renewing from an old version, the empty Le_Keylength means 2048.
# Note, do not use DEFAULT_DOMAIN_KEY_LENGTH as that value may change over
# time but an empty value implies 2048 specifically.
Expand Down Expand Up @@ -5744,6 +5753,10 @@ signcsr() {
_local_addr="${11}"
_challenge_alias="${12}"
_preferred_chain="${13}"
_valid_f="${14}"
_valid_t="${15}"
_cert_prof="${16}"
_en_key_usage="${17}"

_csrsubj=$(_readSubjectFromCSR "$_csrfile")
if [ "$?" != "0" ]; then
Expand Down Expand Up @@ -5787,7 +5800,7 @@ signcsr() {
_info "Copying CSR to: $CSR_PATH"
cp "$_csrfile" "$CSR_PATH"

issue "$_csrW" "$_csrsubj" "$_csrdomainlist" "$_csrkeylength" "$_real_cert" "$_real_key" "$_real_ca" "$_reload_cmd" "$_real_fullchain" "$_pre_hook" "$_post_hook" "$_renew_hook" "$_local_addr" "$_challenge_alias" "$_preferred_chain"
issue "$_csrW" "$_csrsubj" "$_csrdomainlist" "$_csrkeylength" "$_real_cert" "$_real_key" "$_real_ca" "$_reload_cmd" "$_real_fullchain" "$_pre_hook" "$_post_hook" "$_renew_hook" "$_local_addr" "$_challenge_alias" "$_preferred_chain" "$_valid_f" "$_valid_t" "$_cert_prof" "$_en_key_usage"

}

Expand Down Expand Up @@ -5840,7 +5853,8 @@ list() {
if [ -z "$_domain" ]; then
printf "%s\n" "Main_Domain${_sep}KeyLength${_sep}SAN_Domains${_sep}Profile${_sep}CA${_sep}Created${_sep}Renew"
fi
for di in "${CERT_HOME}"/{*.*,*:*}/; do
for di in "${CERT_HOME}"/*.* "${CERT_HOME}"/*:*; do
[ -d "$di" ] || continue
d=$(basename "$di")
_debug d "$d"
(
Expand Down Expand Up @@ -6537,6 +6551,36 @@ deactivate() {
done
}

#cert
_getAKI() {
_cert="$1"
openssl x509 -in "$_cert" -text -noout | grep "X509v3 Authority Key Identifier" -A 1 | _tail_n 1 | tr -d ' :'
}

#cert
_getSerial() {
_cert="$1"
openssl x509 -in "$_cert" -serial -noout | cut -d = -f 2
}

#cert
_get_ARI() {
_cert="$1"
_aki=$(_getAKI "$_cert")
_ser=$(_getSerial "$_cert")
_debug2 "_aki" "$_aki"
_debug2 "_ser" "$_ser"

_akiurl="$(echo "$_aki" | _h2b | _base64 | tr -d = | _url_encode)"
_debug2 "_akiurl" "$_akiurl"
_serurl="$(echo "$_ser" | _h2b | _base64 | tr -d = | _url_encode)"
_debug2 "_serurl" "$_serurl"

_ARI_URL="$ACME_RENEWAL_INFO/$_akiurl.$_serurl"
_get "$_ARI_URL"

}

# Detect profile file if not specified as environment variable
_detect_profile() {
if [ -n "$PROFILE" -a -f "$PROFILE" ]; then
Expand Down Expand Up @@ -8112,7 +8156,7 @@ _process() {
deploy "$_domain" "$_deploy_hook" "$_ecc"
;;
signcsr)
signcsr "$_csr" "$_webroot" "$_cert_file" "$_key_file" "$_ca_file" "$_reloadcmd" "$_fullchain_file" "$_pre_hook" "$_post_hook" "$_renew_hook" "$_local_address" "$_challenge_alias" "$_preferred_chain"
signcsr "$_csr" "$_webroot" "$_cert_file" "$_key_file" "$_ca_file" "$_reloadcmd" "$_fullchain_file" "$_pre_hook" "$_post_hook" "$_renew_hook" "$_local_address" "$_challenge_alias" "$_preferred_chain" "$_valid_from" "$_valid_to" "$_certificate_profile" "$_extended_key_usage"
;;
showcsr)
showcsr "$_csr" "$_domain"
Expand Down
10 changes: 9 additions & 1 deletion deploy/qiniu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
# export QINIU_CDN_DOMAIN="cdn.example.com"
# If you have more than one domain, just
# export QINIU_CDN_DOMAIN="cdn1.example.com cdn2.example.com"
# Optional: force HTTPS redirect (default: false)
# export QINIU_FORCE_HTTPS="true"

QINIU_API_BASE="https://api.qiniu.com"

Expand Down Expand Up @@ -44,6 +46,12 @@ qiniu_deploy() {
QINIU_CDN_DOMAIN="$_cdomain"
fi

if [ -z "$QINIU_FORCE_HTTPS" ]; then
QINIU_FORCE_HTTPS="false"
else
_savedomainconf QINIU_FORCE_HTTPS "$QINIU_FORCE_HTTPS"
fi

## upload certificate
string_fullchain=$(sed 's/$/\\n/' "$_cfullchain" | tr -d '\n')
string_key=$(sed 's/$/\\n/' "$_ckey" | tr -d '\n')
Expand All @@ -69,7 +77,7 @@ qiniu_deploy() {
_debug certId "$_certId"

## update domain ssl config
update_body="{\"certid\":$_certId,\"forceHttps\":false}"
update_body="{\"certid\":$_certId,\"forceHttps\":$QINIU_FORCE_HTTPS}"
for domain in $QINIU_CDN_DOMAIN; do
update_path="/domain/$domain/httpsconf"
update_access_token="$(_make_access_token "$update_path")"
Expand Down
Loading
Loading