Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
d404e92d
Commit
d404e92d
authored
Sep 24, 2016
by
neil
Browse files
Fetch agreement tos dynamically, fix
https://github.com/Neilpang/acme.sh/issues/253
parent
86c017ec
Changes
1
Hide whitespace changes
Inline
Side-by-side
acme.sh
View file @
d404e92d
...
@@ -48,9 +48,6 @@ RENEW_SKIP=2
...
@@ -48,9 +48,6 @@ RENEW_SKIP=2
ECC_SEP
=
"_"
ECC_SEP
=
"_"
ECC_SUFFIX
=
"
${
ECC_SEP
}
ecc"
ECC_SUFFIX
=
"
${
ECC_SEP
}
ecc"
if
[
-z
"
$AGREEMENT
"
]
;
then
AGREEMENT
=
"
$DEFAULT_AGREEMENT
"
fi
__INTERACTIVE
=
""
__INTERACTIVE
=
""
if
[
-t
1
]
;
then
if
[
-t
1
]
;
then
...
@@ -1767,6 +1764,93 @@ _on_issue_success() {
...
@@ -1767,6 +1764,93 @@ _on_issue_success() {
}
}
_regAccount
()
{
_initpath
if
[
!
-f
"
$ACCOUNT_KEY_PATH
"
]
;
then
_acck
=
"no"
if
[
"
$Le_Keylength
"
]
;
then
_acck
=
"
$Le_Keylength
"
fi
if
!
createAccountKey
"
$_acck
"
;
then
_err
"Create account key error."
return
1
fi
fi
if
!
_calcjwk
"
$ACCOUNT_KEY_PATH
"
;
then
return
1
fi
_updateTos
=
""
_reg_res
=
"new-reg"
while
true
;
do
_debug AGREEMENT
"
$AGREEMENT
"
accountkey_json
=
$(
printf
"%s"
"
$jwk
"
|
tr
-d
' '
)
thumbprint
=
$(
printf
"%s"
"
$accountkey_json
"
| _digest
"sha256"
| _urlencode
)
regjson
=
'{"resource": "'
$_reg_res
'", "agreement": "'
$AGREEMENT
'"}'
if
[
"
$ACCOUNT_EMAIL
"
]
;
then
regjson
=
'{"resource": "'
$_reg_res
'", "contact": ["mailto: '
$ACCOUNT_EMAIL
'"], "agreement": "'
$AGREEMENT
'"}'
fi
if
[
-z
"
$_updateTos
"
]
;
then
_info
"Registering account"
if
!
_send_signed_request
"
$API
/acme/new-reg"
"
$regjson
"
;
then
_err
"Register account Error:
$response
"
return
1
fi
if
[
"
$code
"
=
""
]
||
[
"
$code
"
=
'201'
]
;
then
echo
"
$response
"
>
$LE_WORKING_DIR
/account.json
_info
"Registered"
elif
[
"
$code
"
=
'409'
]
;
then
_info
"Already registered"
else
_err
"Register account Error:
$response
"
return
1
fi
_accUri
=
"
$(
echo
"
$responseHeaders
"
|
grep
"^Location:"
|
cut
-d
' '
-f
2|
tr
-d
"
\r\n
"
)
"
_debug
"_accUri"
"
$_accUri
"
ACCOUNT_URL
=
"
$_accUri
"
_saveaccountconf ACCOUNT_URL
"
$ACCOUNT_URL
"
_tos
=
"
$(
echo
"
$responseHeaders
"
|
grep
"^Link:.*rel=
\"
terms-of-service
\"
"
| _egrep_o
"<.*>"
|
tr
-d
'<>'
)
"
_debug
"_tos"
"
$_tos
"
if
[
-z
"
$_tos
"
]
;
then
_debug
"Use default tos:
$DEFAULT_AGREEMENT
"
_tos
=
"
$DEFAULT_AGREEMENT
"
fi
if
[
"
$_tos
"
!=
"
$AGREEMENT
"
]
;
then
_updateTos
=
1
AGREEMENT
=
"
$_tos
"
_reg_res
=
"reg"
continue
fi
else
_debug
"Update tos:
$_tos
"
if
!
_send_signed_request
"
$_accUri
"
"
$regjson
"
;
then
_err
"Update tos error."
return
1
fi
if
[
"
$code
"
=
'202'
]
;
then
_debug
"Update tos success."
else
_err
"Update tos error."
return
1
fi
fi
return
0
done
}
#webroot, domain domainlist keylength
#webroot, domain domainlist keylength
issue
()
{
issue
()
{
if
[
-z
"
$2
"
]
;
then
if
[
-z
"
$2
"
]
;
then
...
@@ -1826,69 +1910,21 @@ issue() {
...
@@ -1826,69 +1910,21 @@ issue() {
Le_Alt
=
""
Le_Alt
=
""
fi
fi
if
[
"
$Le_Keylength
"
=
"
$NO_VALUE
"
]
;
then
Le_Keylength
=
""
fi
if
!
_on_before_issue
;
then
if
!
_on_before_issue
;
then
_err
"_on_before_issue."
_err
"_on_before_issue."
return
1
return
1
fi
fi
if
[
!
-f
"
$ACCOUNT_KEY_PATH
"
]
;
then
if
!
_regAccount
;
then
_acck
=
"
$NO_VALUE
"
if
[
"
$Le_Keylength
"
]
;
then
_acck
=
"
$Le_Keylength
"
fi
if
!
createAccountKey
"
$_acck
"
;
then
_err
"Create account key error."
if
[
"
$usingApache
"
]
;
then
_restoreApache
fi
_on_issue_err
return
1
fi
fi
if
!
_calcjwk
"
$ACCOUNT_KEY_PATH
"
;
then
if
[
"
$usingApache
"
]
;
then
_restoreApache
fi
_on_issue_err
_on_issue_err
return
1
return
1
fi
fi
accountkey_json
=
$(
printf
"%s"
"
$jwk
"
|
tr
-d
' '
)
thumbprint
=
$(
printf
"%s"
"
$accountkey_json
"
| _digest
"sha256"
| _urlencode
)
regjson
=
'{"resource": "new-reg", "agreement": "'
$AGREEMENT
'"}'
if
[
"
$ACCOUNT_EMAIL
"
]
;
then
regjson
=
'{"resource": "new-reg", "contact": ["mailto: '
$ACCOUNT_EMAIL
'"], "agreement": "'
$AGREEMENT
'"}'
fi
accountkeyhash
=
"
$(
cat
"
$ACCOUNT_KEY_PATH
"
| _digest
"sha256"
)
"
accountkeyhash
=
"
$(
echo
$accountkeyhash$API$regjson
| _digest
"sha256"
)
"
if
[
"
$accountkeyhash
"
!=
"
$ACCOUNT_KEY_HASH
"
]
;
then
_info
"Registering account"
_send_signed_request
"
$API
/acme/new-reg"
"
$regjson
"
if
[
"
$code
"
=
""
]
||
[
"
$code
"
=
'201'
]
;
then
_info
"Registered"
echo
"
$response
"
>
$LE_WORKING_DIR
/account.json
elif
[
"
$code
"
=
'409'
]
;
then
_info
"Already registered"
else
_err
"Register account Error:
$response
"
_clearup
_on_issue_err
return
1
fi
ACCOUNT_KEY_HASH
=
"
$accountkeyhash
"
_saveaccountconf
"ACCOUNT_KEY_HASH"
"
$ACCOUNT_KEY_HASH
"
else
_info
"Skip register account key"
fi
if
[
"
$Le_Keylength
"
=
"
$NO_VALUE
"
]
;
then
Le_Keylength
=
""
fi
if
[
-f
"
$CSR_PATH
"
]
&&
[
!
-f
"
$CERT_KEY_PATH
"
]
;
then
if
[
-f
"
$CSR_PATH
"
]
&&
[
!
-f
"
$CERT_KEY_PATH
"
]
;
then
_info
"Signing from existing CSR."
_info
"Signing from existing CSR."
else
else
...
@@ -2301,13 +2337,18 @@ issue() {
...
@@ -2301,13 +2337,18 @@ issue() {
return
1
return
1
fi
fi
_rcert
=
"
$response
"
Le_LinkCert
=
"
$(
grep
-i
'^Location.*$'
$HTTP_HEADER
|
head
-1
|
tr
-d
"
\r\n
"
|
cut
-d
" "
-f
2
)
"
Le_LinkCert
=
"
$(
grep
-i
'^Location.*$'
$HTTP_HEADER
|
head
-1
|
tr
-d
"
\r\n
"
|
cut
-d
" "
-f
2
)
"
_savedomainconf
"Le_LinkCert"
"
$Le_LinkCert
"
_savedomainconf
"Le_LinkCert"
"
$Le_LinkCert
"
if
[
"
$Le_LinkCert
"
]
;
then
if
[
"
$Le_LinkCert
"
]
;
then
echo
"
$BEGIN_CERT
"
>
"
$CERT_PATH
"
echo
"
$BEGIN_CERT
"
>
"
$CERT_PATH
"
_get
"
$Le_LinkCert
"
| _base64
"multiline"
>>
"
$CERT_PATH
"
if
!
_get
"
$Le_LinkCert
"
| _base64
"multiline"
>>
"
$CERT_PATH
"
;
then
_debug
"Get cert failed. Let's try last response."
printf
--
"%s"
"
$_rcert
"
| _dbase64
"multiline"
| _base64
"multiline"
>>
"
$CERT_PATH
"
fi
echo
"
$END_CERT
"
>>
"
$CERT_PATH
"
echo
"
$END_CERT
"
>>
"
$CERT_PATH
"
_info
"
$(
__green
"Cert success."
)
"
_info
"
$(
__green
"Cert success."
)
"
cat
"
$CERT_PATH
"
cat
"
$CERT_PATH
"
...
@@ -2918,6 +2959,9 @@ _initconf() {
...
@@ -2918,6 +2959,9 @@ _initconf() {
#ACCOUNT_KEY_PATH=
\"
/path/to/account.key
\"
#ACCOUNT_KEY_PATH=
\"
/path/to/account.key
\"
#CERT_HOME=
\"
/path/to/cert/home
\"
#CERT_HOME=
\"
/path/to/cert/home
\"
#ACCOUNT_URL=
\"\"
#LOG_FILE=
\"
$DEFAULT_LOG_FILE
\"
#LOG_FILE=
\"
$DEFAULT_LOG_FILE
\"
#AUTO_UPGRADE=
\"
1
\"
#AUTO_UPGRADE=
\"
1
\"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment