Fix end-date format depending on system
This commit is contained in:
parent
047c6e334a
commit
6d71a5a177
27
shellpki
27
shellpki
|
@ -49,7 +49,7 @@ Create a client certificate with key and CSR directly generated on server :
|
||||||
-p, --password prompt the user for a password to set on the client key
|
-p, --password prompt the user for a password to set on the client key
|
||||||
--password-file if provided with a path to a readable file, the first line is read and set as password on the client key
|
--password-file if provided with a path to a readable file, the first line is read and set as password on the client key
|
||||||
--days specify how many days the certificate should be valid
|
--days specify how many days the certificate should be valid
|
||||||
--end-date specify until which date the certificate should be valid, in MM/DD/[YY]YY [hh:mm:ss] format
|
--end-date specify until which date the certificate should be valid, in "MM/DD/YYYY hh:mm:ss" format
|
||||||
--non-interactive do not prompt the user, and exit if an error occurs
|
--non-interactive do not prompt the user, and exit if an error occurs
|
||||||
--replace-existing if the certificate already exists, revoke it before creating a new one
|
--replace-existing if the certificate already exists, revoke it before creating a new one
|
||||||
|
|
||||||
|
@ -490,12 +490,24 @@ create() {
|
||||||
crt_expiration_arg="-days ${days}"
|
crt_expiration_arg="-days ${days}"
|
||||||
fi
|
fi
|
||||||
if [ -n "${end_date}" ]; then
|
if [ -n "${end_date}" ]; then
|
||||||
cert_end_date=$(TZ=:Zulu date --date "${end_date}" +"%Y%m%d%H%M%SZ" 2> /dev/null)
|
if [ "${SYSTEM}" = "linux" ]; then
|
||||||
# shellcheck disable=SC2181
|
cert_end_date=$(TZ=:Zulu date --date "${end_date}" +"%Y%m%d%H%M%SZ" 2> /dev/null)
|
||||||
if [ "$?" -ne 0 ]; then
|
# shellcheck disable=SC2181
|
||||||
error "Invalid end date format : \`${end_date}' can't be parsed by date(1)"
|
if [ "$?" -ne 0 ]; then
|
||||||
|
error "Invalid end date format: \`${end_date}' can't be parsed by date(1). Expected format: MM/DD/[YY]YY [hh[:mm[:ss]]]."
|
||||||
|
else
|
||||||
|
crt_expiration_arg="-enddate ${cert_end_date}"
|
||||||
|
fi
|
||||||
|
elif [ "${SYSTEM}" = "openbsd" ]; then
|
||||||
|
cert_end_date=$(TZ=:Zulu date -f "%m/%d/%C%y %H:%M:%S" -j "${end_date}" +"%Y%m%d%H%M%SZ" 2> /dev/null)
|
||||||
|
# shellcheck disable=SC2181
|
||||||
|
if [ "$?" -ne 0 ]; then
|
||||||
|
error "Invalid end date format: \`${end_date}' can't be parsed by date(1). Expected format: MM/DD/YYYY hh:mm:ss."
|
||||||
|
else
|
||||||
|
crt_expiration_arg="-enddate ${cert_end_date}"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
crt_expiration_arg="-enddate ${cert_end_date}"
|
error "System ${SYSTEM} not supported."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ "${non_interactive}" -eq 1 ]; then
|
if [ "${non_interactive}" -eq 1 ]; then
|
||||||
|
@ -901,6 +913,9 @@ is_group() {
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
# Know what system we are on, because OpenBSD and Linux do not implement date(1) in the same way
|
||||||
|
SYSTEM=$(uname | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
# default config
|
# default config
|
||||||
# TODO : override with /etc/default/shellpki
|
# TODO : override with /etc/default/shellpki
|
||||||
CONF_FILE="/etc/shellpki/openssl.cnf"
|
CONF_FILE="/etc/shellpki/openssl.cnf"
|
||||||
|
|
Loading…
Reference in a new issue