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
0334473a
Commit
0334473a
authored
Jan 07, 2016
by
neil
Browse files
fix param issues
parent
85fb3776
Changes
1
Show whitespace changes
Inline
Side-by-side
le.sh
View file @
0334473a
...
...
@@ -57,7 +57,7 @@ createAccountKey() {
return
else
#generate account key
openssl genrsa
$length
>
$ACCOUNT_KEY_PATH
openssl genrsa
$length
>
"
$ACCOUNT_KEY_PATH
"
fi
}
...
...
@@ -76,14 +76,12 @@ createDomainKey() {
length
=
2048
fi
_initpath
$domain
mkdir
-p
$WORKING_DIR
/
$domain
CERT_KEY_PATH
=
$WORKING_DIR
/
$domain
/
$domain
.key
if
[
-f
"
$CERT_KEY_PATH
"
]
;
then
_info
"Domain key exists, skip"
else
#generate account key
openssl genrsa
$length
>
$CERT_KEY_PATH
openssl genrsa
$length
>
"
$CERT_KEY_PATH
"
fi
}
...
...
@@ -99,7 +97,7 @@ createCSR() {
domainlist
=
$2
if
[
-f
$CSR_PATH
]
;
then
if
[
-f
"
$CSR_PATH
"
]
;
then
_info
"CSR exists, skip"
return
fi
...
...
@@ -107,12 +105,12 @@ createCSR() {
if
[
-z
"
$domainlist
"
]
;
then
#single domain
_info
"Single domain"
$domain
openssl req
-new
-sha256
-key
$CERT_KEY_PATH
-subj
"/CN=
$domain
"
>
$CSR_PATH
openssl req
-new
-sha256
-key
"
$CERT_KEY_PATH
"
-subj
"/CN=
$domain
"
>
"
$CSR_PATH
"
else
alt
=
DNS:
$(
echo
$domainlist
|
sed
"s/,/,DNS:/g"
)
alt
=
"
DNS:
$(
echo
$domainlist
|
sed
"s/,/,DNS:/g"
)
"
#multi
_info
"Multi domain"
$alt
openssl req
-new
-sha256
-key
$CERT_KEY_PATH
-subj
"/CN=
$domain
"
-reqexts
SAN
-config
<
(
printf
"[ req_distinguished_name ]
\n
[ req ]
\n
distinguished_name = req_distinguished_name
\n
[SAN]
\n
subjectAltName=
$alt
"
)
-out
$CSR_PATH
_info
"Multi domain"
"
$alt
"
openssl req
-new
-sha256
-key
"
$CERT_KEY_PATH
"
-subj
"/CN=
$domain
"
-reqexts
SAN
-config
<
(
printf
"[ req_distinguished_name ]
\n
[ req ]
\n
distinguished_name = req_distinguished_name
\n
[SAN]
\n
subjectAltName=
$alt
"
)
-out
"
$CSR_PATH
"
fi
}
...
...
@@ -193,15 +191,15 @@ _setopt() {
echo
usage:
$0
'"file" "opt" "=" "value" [";"]'
return
fi
if
[
!
-f
$__conf
]
;
then
touch
$__conf
if
[
!
-f
"
$__conf
"
]
;
then
touch
"
$__conf
"
fi
if
grep
-H
-n
"^
$__opt$__sep
"
$__conf
>
/dev/null
;
then
if
grep
-H
-n
"^
$__opt$__sep
"
"
$__conf
"
>
/dev/null
;
then
_debug OK
sed
-i
"s|^
$__opt$__sep
.*
$|$__opt$__sep$__val$__end
|"
$__conf
sed
-i
"s|^
$__opt$__sep
.*
$|$__opt$__sep$__val$__end
|"
"
$__conf
"
else
_debug APP
echo
"
$__opt$__sep$__val$__end
"
>>
$__conf
echo
"
$__opt$__sep$__val$__end
"
>>
"
$__conf
"
fi
_debug
"
$(
grep
-H
-n
"^
$__opt$__sep
"
$__conf
)
"
}
...
...
@@ -212,7 +210,7 @@ _startserver() {
if
[
"
$DEBUG
"
]
;
then
echo
-e
-n
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
| nc
-q
1
-l
-p
80
else
echo
-e
-n
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
| nc
-q
1
-l
-p
80
2>&1
>
/dev/null
echo
-e
-n
"HTTP/1.1 200 OK
\r\n\r\n
$content
"
| nc
-q
1
-l
-p
80
>
/dev/null
fi
done
}
...
...
@@ -221,12 +219,12 @@ _stopserver() {
pid
=
"
$1
"
if
[
"
$pid
"
]
;
then
if
[
"
$DEBUG
"
]
;
then
kill
-s
9
$pid
2>&1
killall
-s
9 nc
2>&1
kill
-s
9
$pid
killall
-s
9 nc
else
kill
-s
9
$pid
2>&1
>
/dev/null
kill
-s
9
$pid
>
/dev/null
wait
$pid
2>/dev/null
killall
-s
9 nc
2>&1
>
/dev/null
killall
-s
9 nc
>
/dev/null
fi
fi
}
...
...
@@ -236,23 +234,25 @@ _initpath() {
WORKING_DIR
=
~/.le
fi
domain
=
$1
mkdir
-p
$WORKING_DIR
ACCOUNT_KEY_PATH
=
$WORKING_DIR
/account.acc
domain
=
"
$1
"
mkdir
-p
"
$WORKING_DIR
"
ACCOUNT_KEY_PATH
=
"
$WORKING_DIR
/account.acc
"
if
[
-z
"
$domain
"
]
;
then
return
0
fi
mkdir
-p
$WORKING_DIR
/
$domain
mkdir
-p
"
$WORKING_DIR
/
$domain
"
DOMAIN_CONF
=
"
$WORKING_DIR
/
$domain
/
$Le_Domain
.conf"
CSR_PATH
=
$WORKING_DIR
/
$domain
/
$domain
.csr
CSR_PATH
=
"
$WORKING_DIR
/
$domain
/
$domain
.csr
"
CERT_KEY_PATH
=
$WORKING_DIR
/
$domain
/
$domain
.key
CERT_KEY_PATH
=
"
$WORKING_DIR
/
$domain
/
$domain
.key
"
CERT_PATH
=
$WORKING_DIR
/
$domain
/
$domain
.cer
CERT_PATH
=
"
$WORKING_DIR
/
$domain
/
$domain
.cer
"
CA_CERT_PATH
=
$WORKING_DIR
/
$domain
/ca.cer
CA_CERT_PATH
=
"
$WORKING_DIR
/
$domain
/ca.cer
"
}
...
...
@@ -261,14 +261,14 @@ issue() {
echo
"Usage: le issue webroot|no a.com [www.a.com,b.com,c.com]|no [key-length]|no [cert-file-path]|no [key-file-path]|no [ca-cert-file-path]|no [reloadCmd]|no"
return
1
fi
Le_Webroot
=
$1
Le_Domain
=
$2
Le_Alt
=
$3
Le_Keylength
=
$4
Le_RealCertPath
=
$5
Le_RealKeyPath
=
$6
Le_RealCACertPath
=
$7
Le_ReloadCmd
=
$8
Le_Webroot
=
"
$1
"
Le_Domain
=
"
$2
"
Le_Alt
=
"
$3
"
Le_Keylength
=
"
$4
"
Le_RealCertPath
=
"
$5
"
Le_RealKeyPath
=
"
$6
"
Le_RealCACertPath
=
"
$7
"
Le_ReloadCmd
=
"
$8
"
if
[
-z
"
$Le_Domain
"
]
;
then
Le_Domain
=
"
$1
"
...
...
@@ -276,7 +276,6 @@ issue() {
_initpath
$Le_Domain
DOMAIN_CONF
=
$WORKING_DIR
/
$Le_Domain
/
$Le_Domain
.conf
if
[
-f
"
$DOMAIN_CONF
"
]
;
then
source
"
$DOMAIN_CONF
"
if
[
-z
"
$FORCE
"
]
&&
[
"
$Le_NextRenewTime
"
]
&&
[
"
$(
date
-u
"+%s"
)
"
-lt
"
$Le_NextRenewTime
"
]
;
then
...
...
@@ -397,7 +396,7 @@ issue() {
if
[
"
$Le_Webroot
"
==
"no"
]
;
then
_info
"Standalone mode server"
_startserver
"
$keyauthorization
"
2>&1
>
/dev/null
&
_startserver
"
$keyauthorization
"
&
serverproc
=
"
$!
"
sleep
2
_debug serverproc
$serverproc
...
...
@@ -463,26 +462,26 @@ issue() {
Le_LinkCert
=
"
$(
grep
-i
-o
'^Location.*'
$CURL_HEADER
|sed
's/\r//g'
|
cut
-d
" "
-f
2
)
"
_setopt
$DOMAIN_CONF
"Le_LinkCert"
"="
"
$Le_LinkCert
"
_setopt
"
$DOMAIN_CONF
"
"Le_LinkCert"
"="
"
$Le_LinkCert
"
if
[
"
$Le_LinkCert
"
]
;
then
echo
-----BEGIN
CERTIFICATE-----
>
$CERT_PATH
curl
--silent
$Le_LinkCert
|
base64
>>
$CERT_PATH
echo
-----END
CERTIFICATE-----
>>
$CERT_PATH
echo
-----BEGIN
CERTIFICATE-----
>
"
$CERT_PATH
"
curl
--silent
"
$Le_LinkCert
"
|
base64
>>
"
$CERT_PATH
"
echo
-----END
CERTIFICATE-----
>>
"
$CERT_PATH
"
_info
"Cert success."
cat
$CERT_PATH
cat
"
$CERT_PATH
"
_info
"Your cert is in
$CERT_PATH
"
fi
_setopt
$DOMAIN_CONF
"Le_Domain"
"="
"
$Le_Domain
"
_setopt
$DOMAIN_CONF
"Le_Alt"
"="
"
$Le_Alt
"
_setopt
$DOMAIN_CONF
"Le_Webroot"
"="
"
$Le_Webroot
"
_setopt
$DOMAIN_CONF
"Le_Keylength"
"="
"
$Le_Keylength
"
_setopt
$DOMAIN_CONF
"Le_RealCertPath"
"="
"
\"
$Le_RealCertPath
\"
"
_setopt
$DOMAIN_CONF
"Le_RealCACertPath"
"="
"
\"
$Le_RealCACertPath
\"
"
_setopt
$DOMAIN_CONF
"Le_RealKeyPath"
"="
"
\"
$Le_RealKeyPath
\"
"
_setopt
$DOMAIN_CONF
"Le_ReloadCmd"
"="
"
\"
$Le_ReloadCmd
\"
"
_setopt
"
$DOMAIN_CONF
"
"Le_Domain"
"="
"
$Le_Domain
"
_setopt
"
$DOMAIN_CONF
"
"Le_Alt"
"="
"
$Le_Alt
"
_setopt
"
$DOMAIN_CONF
"
"Le_Webroot"
"="
"
$Le_Webroot
"
_setopt
"
$DOMAIN_CONF
"
"Le_Keylength"
"="
"
$Le_Keylength
"
_setopt
"
$DOMAIN_CONF
"
"Le_RealCertPath"
"="
"
\"
$Le_RealCertPath
\"
"
_setopt
"
$DOMAIN_CONF
"
"Le_RealCACertPath"
"="
"
\"
$Le_RealCACertPath
\"
"
_setopt
"
$DOMAIN_CONF
"
"Le_RealKeyPath"
"="
"
\"
$Le_RealKeyPath
\"
"
_setopt
"
$DOMAIN_CONF
"
"Le_ReloadCmd"
"="
"
\"
$Le_ReloadCmd
\"
"
if
[
-z
"
$Le_LinkCert
"
]
;
then
response
=
"
$(
echo
$response
|
base64
-d
)
"
...
...
@@ -491,60 +490,60 @@ issue() {
fi
Le_LinkIssuer
=
$(
grep
-i
'^Link'
$CURL_HEADER
|
cut
-d
" "
-f
2|
cut
-d
';'
-f
1 |
sed
's/<//g'
|
sed
's/>//g'
)
_setopt
$DOMAIN_CONF
"Le_LinkIssuer"
"="
"
$Le_LinkIssuer
"
_setopt
"
$DOMAIN_CONF
"
"Le_LinkIssuer"
"="
"
$Le_LinkIssuer
"
if
[
"
$Le_LinkIssuer
"
]
;
then
echo
-----BEGIN
CERTIFICATE-----
>
$CA_CERT_PATH
curl
--silent
$Le_LinkIssuer
|
base64
>>
$CA_CERT_PATH
echo
-----END
CERTIFICATE-----
>>
$CA_CERT_PATH
echo
-----BEGIN
CERTIFICATE-----
>
"
$CA_CERT_PATH
"
curl
--silent
"
$Le_LinkIssuer
"
|
base64
>>
"
$CA_CERT_PATH
"
echo
-----END
CERTIFICATE-----
>>
"
$CA_CERT_PATH
"
_info
"The intermediate CA cert is in
$CA_CERT_PATH
"
fi
Le_CertCreateTime
=
$(
date
-u
"+%s"
)
_setopt
$DOMAIN_CONF
"Le_CertCreateTime"
"="
"
$Le_CertCreateTime
"
_setopt
"
$DOMAIN_CONF
"
"Le_CertCreateTime"
"="
"
$Le_CertCreateTime
"
Le_CertCreateTimeStr
=
$(
date
-u
"+%Y-%m-%d %H:%M:%S UTC"
)
_setopt
$DOMAIN_CONF
"Le_CertCreateTimeStr"
"="
"
\"
$Le_CertCreateTimeStr
\"
"
_setopt
"
$DOMAIN_CONF
"
"Le_CertCreateTimeStr"
"="
"
\"
$Le_CertCreateTimeStr
\"
"
if
[
!
"
$Le_RenewalDays
"
]
;
then
Le_RenewalDays
=
50
fi
_setopt
$DOMAIN_CONF
"Le_RenewalDays"
"="
"
$Le_RenewalDays
"
_setopt
"
$DOMAIN_CONF
"
"Le_RenewalDays"
"="
"
$Le_RenewalDays
"
Le_NextRenewTime
=
$(
date
-u
-d
"+
$Le_RenewalDays
day"
"+%s"
)
_setopt
$DOMAIN_CONF
"Le_NextRenewTime"
"="
"
$Le_NextRenewTime
"
_setopt
"
$DOMAIN_CONF
"
"Le_NextRenewTime"
"="
"
$Le_NextRenewTime
"
Le_NextRenewTimeStr
=
$(
date
-u
-d
"+
$Le_RenewalDays
day"
"+%Y-%m-%d %H:%M:%S UTC"
)
_setopt
$DOMAIN_CONF
"Le_NextRenewTimeStr"
"="
"
\"
$Le_NextRenewTimeStr
\"
"
_setopt
"
$DOMAIN_CONF
"
"Le_NextRenewTimeStr"
"="
"
\"
$Le_NextRenewTimeStr
\"
"
if
[
"
$Le_RealCertPath
"
]
;
then
if
[
-f
"
$Le_RealCertPath
"
]
;
then
rm
-f
$Le_RealCertPath
rm
-f
"
$Le_RealCertPath
"
fi
ln
-s
$CERT_PATH
$Le_RealCertPath
ln
-s
"
$CERT_PATH
"
"
$Le_RealCertPath
"
fi
if
[
"
$Le_RealCACertPath
"
]
;
then
if
[
-f
"
$Le_RealCACertPath
"
]
;
then
rm
-f
$Le_RealCACertPath
rm
-f
"
$Le_RealCACertPath
"
fi
ln
-s
$CA_CERT_PATH
$Le_RealCACertPath
ln
-s
"
$CA_CERT_PATH
"
"
$Le_RealCACertPath
"
fi
if
[
"
$Le_RealKeyPath
"
]
;
then
if
[
-f
"
$Le_RealKeyPath
"
]
;
then
rm
-f
$Le_RealKeyPath
rm
-f
"
$Le_RealKeyPath
"
fi
ln
-s
$CERT_KEY_PATH
$Le_RealKeyPath
ln
-s
"
$CERT_KEY_PATH
"
"
$Le_RealKeyPath
"
fi
if
[
"
$Le_ReloadCmd
"
]
;
then
_info
"Run Le_ReloadCmd:
$Le_ReloadCmd
"
$Le_ReloadCmd
"
$Le_ReloadCmd
"
fi
}
...
...
@@ -624,13 +623,10 @@ install() {
_info
"Installing to
$WORKING_DIR
"
mkdir
-p
$WORKING_DIR
/
cp
le.sh
$WORKING_DIR
/
chmod
+x
$WORKING_DIR
/le.sh
if
[
!
-f
/bin/le.sh
]
;
then
ln
-s
$WORKING_DIR
/le.sh /bin/le.sh
ln
-s
$WORKING_DIR
/le.sh /bin/le
cp
le.sh
"/bin/"
chmod
+x
"/bin/le.sh"
ln
-s
"/bin/le.sh"
/bin/le
fi
_info
"Installing cron job"
...
...
@@ -682,12 +678,6 @@ showhelp() {
if
[
-z
"
$1
"
]
;
then
showhelp
else
"
$1
"
"
$2
"
"
$3
"
"
$4
"
"
$5
"
"
$6
"
"
$7
"
"
$8
"
"
$9
"
fi
$1
$2
$3
$4
$5
$6
$7
$8
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