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
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`:
...
@@ -332,3 +332,52 @@ variable to anything (ex: "1") before running `acme.sh`:
```
sh
```
sh
export
FABIO
=
"1"
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