Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Acme.Sh
Commits
89561b8d
Unverified
Commit
89561b8d
authored
Jan 22, 2019
by
neil
Committed by
GitHub
Jan 22, 2019
Browse files
Merge pull request #2027 from shonenada/deploy-qiniu
Qiniu deployment support
parents
545f2355
a4a53e13
Changes
2
Hide whitespace changes
Inline
Side-by-side
deploy/README.md
View file @
89561b8d
...
...
@@ -332,3 +332,52 @@ variable to anything (ex: "1") before running `acme.sh`:
```
sh
export
FABIO
=
"1"
```
## 13. Deploy your certificate to Qiniu.com
使用 acme.sh 部署到七牛之前,需要确保部署的域名已打开 HTTPS 功能,您可以访问
[
融合 CDN - 域名管理
](
https://portal.qiniu.com/cdn/domain
)
设置。
另外还需要先导出 AK/SK 环境变量,您可以访问
[
密钥管理
](
https://portal.qiniu.com/user/key
)
获得。
```
sh
$
export
QINIU_AK
=
"foo"
$
export
QINIU_SK
=
"bar"
```
完成准备工作之后,您就可以通过下面的命令开始部署 SSL 证书到七牛上:
```
sh
$
acme.sh
--deploy
-d
example.com
--deploy-hook
qiniu
```
假如您部署的证书为泛域名证书,您还需要设置
`QINIU_CDN_DOMAIN`
变量,指定实际需要部署的域名:
```
sh
$
export
QINIU_CDN_DOMAIN
=
"cdn.example.com"
$
acme.sh
--deploy
-d
example.com
--deploy-hook
qiniu
```
### English version
You should create AccessKey/SecretKey pair in https://portal.qiniu.com/user/key
before deploying your certificate, and please ensure you have enabled HTTPS for
your domain name. You can enable it in https://portal.qiniu.com/cdn/domain.
```
sh
$
export
QINIU_AK
=
"foo"
$
export
QINIU_SK
=
"bar"
```
then you can deploy certificate by following command:
```
sh
$
acme.sh
--deploy
-d
example.com
--deploy-hook
qiniu
```
(Optional), If you are using wildcard certificate,
you may need export
`QINIU_CDN_DOMAIN`
to specify which domain
you want to update:
```
sh
$
export
QINIU_CDN_DOMAIN
=
"cdn.example.com"
$
acme.sh
--deploy
-d
example.com
--deploy-hook
qiniu
```
deploy/qiniu.sh
0 → 100644
View file @
89561b8d
#!/usr/bin/env sh
# Script to create certificate to qiniu.com
#
# This deployment required following variables
# export QINIU_AK="QINIUACCESSKEY"
# export QINIU_SK="QINIUSECRETKEY"
# export QINIU_CDN_DOMAIN="cdn.example.com"
QINIU_API_BASE
=
"https://api.qiniu.com"
qiniu_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
"
if
[
-z
"
$QINIU_AK
"
]
;
then
_err
"QINIU_AK is not defined."
return
1
else
_savedomainconf QINIU_AK
"
$QINIU_AK
"
fi
if
[
-z
"
$QINIU_SK
"
]
;
then
_err
"QINIU_SK is not defined."
return
1
else
_savedomainconf QINIU_SK
"
$QINIU_SK
"
fi
if
[
"
$QINIU_CDN_DOMAIN
"
]
;
then
_savedomainconf QINIU_CDN_DOMAIN
"
$QINIU_CDN_DOMAIN
"
else
QINIU_CDN_DOMAIN
=
"
$_cdomain
"
fi
## upload certificate
string_fullchain
=
$(
sed
's/$/\\n/'
"
$_cfullchain
"
|
tr
-d
'\n'
)
string_key
=
$(
sed
's/$/\\n/'
"
$_ckey
"
|
tr
-d
'\n'
)
sslcert_path
=
"/sslcert"
sslcerl_body
=
"{
\"
name
\"
:
\"
$_cdomain
\"
,
\"
common_name
\"
:
\"
$QINIU_CDN_DOMAIN
\"
,
\"
ca
\"
:
\"
$string_fullchain
\"
,
\"
pri
\"
:
\"
$string_key
\"
}"
sslcert_access_token
=
"
$(
_make_access_token
"
$sslcert_path
"
)
"
_debug sslcert_access_token
"
$sslcert_access_token
"
export
_H1
=
"Authorization: QBox
$sslcert_access_token
"
sslcert_response
=
$(
_post
"
$sslcerl_body
"
"
$QINIU_API_BASE$sslcert_path
"
0
"POST"
"application/json"
| _dbase64
"multiline"
)
if
!
_contains
"
$sslcert_response
"
"certID"
;
then
_err
"Error in creating certificate:"
_err
"
$sslcert_response
"
return
1
fi
_debug sslcert_response
"
$sslcert_response
"
_info
"Certificate successfully uploaded, updating domain
$_cdomain
"
## extract certId
_certId
=
"
$(
printf
"%s"
"
$sslcert_response
"
| _normalizeJson | _egrep_o
"certID
\"
: *
\"
[^
\"
]*
\"
"
|
cut
-d
:
-f
2
)
"
_debug certId
"
$_certId
"
## update domain ssl config
update_path
=
"/domain/
$QINIU_CDN_DOMAIN
/httpsconf"
update_body
=
"{
\"
certid
\"
:
$_certId
,
\"
forceHttps
\"
:false}"
update_access_token
=
"
$(
_make_access_token
"
$update_path
"
)
"
_debug update_access_token
"
$update_access_token
"
export
_H1
=
"Authorization: QBox
$update_access_token
"
update_response
=
$(
_post
"
$update_body
"
"
$QINIU_API_BASE$update_path
"
0
"PUT"
"application/json"
| _dbase64
"multiline"
)
if
_contains
"
$update_response
"
"error"
;
then
_err
"Error in updating domain httpsconf:"
_err
"
$update_response
"
return
1
fi
_debug update_response
"
$update_response
"
_info
"Certificate successfully deployed"
return
0
}
_make_access_token
()
{
_token
=
"
$(
printf
"%s
\n
"
"
$1
"
| _hmac
"sha1"
"
$(
printf
"%s"
"
$QINIU_SK
"
| _hex_dump |
tr
-d
" "
)
"
| _base64
)
"
echo
"
$QINIU_AK
:
$_token
"
}
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