Allow OpenSSL to function without a "Safe" ssl-configuration file
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
This commit is contained in:
parent
d3f4fdb177
commit
133d7c7843
102
easyrsa3/easyrsa
102
easyrsa3/easyrsa
@ -283,7 +283,9 @@ Easy-RSA error:
|
|||||||
$1" 1>&2
|
$1" 1>&2
|
||||||
|
|
||||||
print "
|
print "
|
||||||
Host: $host_out"
|
Host: $host_out
|
||||||
|
${EASYRSA_DEBUG+
|
||||||
|
*** Disable EASYRSA_DEBUG mode ***}"
|
||||||
|
|
||||||
exit "${2:-1}"
|
exit "${2:-1}"
|
||||||
} # => die()
|
} # => die()
|
||||||
@ -416,29 +418,43 @@ easyrsa_openssl() {
|
|||||||
|
|
||||||
if [ "$has_config" ]; then
|
if [ "$has_config" ]; then
|
||||||
# Make LibreSSL safe config file from OpenSSL config file
|
# Make LibreSSL safe config file from OpenSSL config file
|
||||||
easyrsa_openssl_conf="$(easyrsa_mktemp)" || \
|
|
||||||
die "easyrsa_openssl - Failed to create temporary file"
|
|
||||||
|
|
||||||
sed \
|
# Do not use easyrsa_mktemp() for init-pki
|
||||||
-e "s\`ENV::EASYRSA\`EASYRSA\`g" \
|
if [ "$want_init_pki" ]; then
|
||||||
-e "s\`\$dir\`$EASYRSA_PKI\`g" \
|
# for init-pki $EASYRSA_SAFE_CONF is always set in the PKI, use it.
|
||||||
-e "s\`\$EASYRSA_PKI\`$EASYRSA_PKI\`g" \
|
easyrsa_openssl_conf="${EASYRSA_SAFE_CONF}.init-tmp"
|
||||||
-e "s\`\$EASYRSA_CERT_EXPIRE\`$EASYRSA_CERT_EXPIRE\`g" \
|
else
|
||||||
-e "s\`\$EASYRSA_CRL_DAYS\`$EASYRSA_CRL_DAYS\`g" \
|
easyrsa_openssl_conf="$(easyrsa_mktemp)" || \
|
||||||
-e "s\`\$EASYRSA_DIGEST\`$EASYRSA_DIGEST\`g" \
|
die "easyrsa_openssl - Failed to create temporary file"
|
||||||
-e "s\`\$EASYRSA_KEY_SIZE\`$EASYRSA_KEY_SIZE\`g" \
|
fi
|
||||||
-e "s\`\$EASYRSA_DIGEST\`$EASYRSA_DIGEST\`g" \
|
|
||||||
-e "s\`\$EASYRSA_DN\`$EASYRSA_DN\`g" \
|
# OpenSSL does not need a safe config, skip this stage
|
||||||
-e "s\`\$EASYRSA_REQ_COUNTRY\`$EASYRSA_REQ_COUNTRY\`g" \
|
if [ "$no_safe_ssl_conf" ]; then
|
||||||
-e "s\`\$EASYRSA_REQ_PROVINCE\`$EASYRSA_REQ_PROVINCE\`g" \
|
cp -f "$EASYRSA_SSL_CONF" "$easyrsa_openssl_conf" || \
|
||||||
-e "s\`\$EASYRSA_REQ_CITY\`$EASYRSA_REQ_CITY\`g" \
|
|
||||||
-e "s\`\$EASYRSA_REQ_ORG\`$EASYRSA_REQ_ORG\`g" \
|
|
||||||
-e "s\`\$EASYRSA_REQ_OU\`$EASYRSA_REQ_OU\`g" \
|
|
||||||
-e "s\`\$EASYRSA_REQ_CN\`$EASYRSA_REQ_CN\`g" \
|
|
||||||
-e "s\`\$EASYRSA_REQ_EMAIL\`$EASYRSA_REQ_EMAIL\`g" \
|
|
||||||
"$EASYRSA_SSL_CONF" > "$easyrsa_openssl_conf" || \
|
|
||||||
die "easyrsa_openssl - Failed to make temporary config"
|
die "easyrsa_openssl - Failed to make temporary config"
|
||||||
|
|
||||||
|
else
|
||||||
|
sed \
|
||||||
|
-e "s\`ENV::EASYRSA\`EASYRSA\`g" \
|
||||||
|
-e "s\`\$dir\`$EASYRSA_PKI\`g" \
|
||||||
|
-e "s\`\$EASYRSA_PKI\`$EASYRSA_PKI\`g" \
|
||||||
|
-e "s\`\$EASYRSA_CERT_EXPIRE\`$EASYRSA_CERT_EXPIRE\`g" \
|
||||||
|
-e "s\`\$EASYRSA_CRL_DAYS\`$EASYRSA_CRL_DAYS\`g" \
|
||||||
|
-e "s\`\$EASYRSA_DIGEST\`$EASYRSA_DIGEST\`g" \
|
||||||
|
-e "s\`\$EASYRSA_KEY_SIZE\`$EASYRSA_KEY_SIZE\`g" \
|
||||||
|
-e "s\`\$EASYRSA_DIGEST\`$EASYRSA_DIGEST\`g" \
|
||||||
|
-e "s\`\$EASYRSA_DN\`$EASYRSA_DN\`g" \
|
||||||
|
-e "s\`\$EASYRSA_REQ_COUNTRY\`$EASYRSA_REQ_COUNTRY\`g" \
|
||||||
|
-e "s\`\$EASYRSA_REQ_PROVINCE\`$EASYRSA_REQ_PROVINCE\`g" \
|
||||||
|
-e "s\`\$EASYRSA_REQ_CITY\`$EASYRSA_REQ_CITY\`g" \
|
||||||
|
-e "s\`\$EASYRSA_REQ_ORG\`$EASYRSA_REQ_ORG\`g" \
|
||||||
|
-e "s\`\$EASYRSA_REQ_OU\`$EASYRSA_REQ_OU\`g" \
|
||||||
|
-e "s\`\$EASYRSA_REQ_CN\`$EASYRSA_REQ_CN\`g" \
|
||||||
|
-e "s\`\$EASYRSA_REQ_EMAIL\`$EASYRSA_REQ_EMAIL\`g" \
|
||||||
|
"$EASYRSA_SSL_CONF" > "$easyrsa_openssl_conf" || \
|
||||||
|
die "easyrsa_openssl - Failed to make temporary config"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$openssl_command" = "makesafeconf" ]; then
|
if [ "$openssl_command" = "makesafeconf" ]; then
|
||||||
# move temp file to safessl-easyrsa.cnf
|
# move temp file to safessl-easyrsa.cnf
|
||||||
mv "$easyrsa_openssl_conf" "$EASYRSA_SAFE_CONF" || \
|
mv "$easyrsa_openssl_conf" "$EASYRSA_SAFE_CONF" || \
|
||||||
@ -500,26 +516,30 @@ verify_curve_ed() {
|
|||||||
|| die "Edward Curve $EASYRSA_CURVE not found."
|
|| die "Edward Curve $EASYRSA_CURVE not found."
|
||||||
} # => verify_curve_ed()
|
} # => verify_curve_ed()
|
||||||
|
|
||||||
|
# Verify the SSL library is functional and establish version dependencies
|
||||||
verify_ssl_lib() {
|
verify_ssl_lib() {
|
||||||
# Verify EASYRSA_OPENSSL command gives expected output
|
|
||||||
if [ -z "$EASYRSA_SSL_OK" ]; then
|
if [ -z "$EASYRSA_SSL_OK" ]; then
|
||||||
val="$("$EASYRSA_OPENSSL" version)"
|
val="$("$EASYRSA_OPENSSL" version)"
|
||||||
case "${val%% *}" in
|
case "${val%% *}" in
|
||||||
OpenSSL|LibreSSL)
|
# OpenSSL does not require a safe config-file
|
||||||
osslv_major="${val#* }"
|
OpenSSL) no_safe_ssl_conf=1 ;;
|
||||||
osslv_major="${osslv_major%%.*}"
|
LibreSSL) : ;; # ok
|
||||||
case "$osslv_major" in
|
|
||||||
1) no_password='-nodes' ;;
|
|
||||||
2) no_password='-nodes' ;; # LibreSSL Only
|
|
||||||
3) no_password='-noenc' ;;
|
|
||||||
*) die "Unsupported SSL library: $osslv_major"
|
|
||||||
esac
|
|
||||||
notice "Using SSL: $EASYRSA_OPENSSL $val" ;;
|
|
||||||
*) die "\
|
*) die "\
|
||||||
Missing or invalid OpenSSL
|
Missing or invalid OpenSSL
|
||||||
Expected to find openssl command at: $EASYRSA_OPENSSL"
|
Expected to find openssl command at: $EASYRSA_OPENSSL"
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Set SSL version dependent $no_password option
|
||||||
|
osslv_major="${val#* }"
|
||||||
|
osslv_major="${osslv_major%%.*}"
|
||||||
|
case "$osslv_major" in
|
||||||
|
1) no_password='-nodes' ;;
|
||||||
|
2) no_password='-nodes' ;; # LibreSSL Only
|
||||||
|
3) no_password='-noenc' ;;
|
||||||
|
*) die "Unsupported SSL library: $osslv_major"
|
||||||
|
esac
|
||||||
|
notice "Using SSL: $EASYRSA_OPENSSL $val"
|
||||||
EASYRSA_SSL_OK=1
|
EASYRSA_SSL_OK=1
|
||||||
|
|
||||||
# Verify EASYRSA_SSL_CONF file exists
|
# Verify EASYRSA_SSL_CONF file exists
|
||||||
@ -757,18 +777,6 @@ install_data_to_pki () {
|
|||||||
cp -f "${EASYRSA_PKI}/${vars_file_example}" \
|
cp -f "${EASYRSA_PKI}/${vars_file_example}" \
|
||||||
"${EASYRSA_PKI}/${vars_file}" || return
|
"${EASYRSA_PKI}/${vars_file}" || return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if session is already defined
|
|
||||||
if [ "$EASYRSA_TEMP_DIR_session" ]; then
|
|
||||||
# Only init-pki can inherit a previous session when deleting a PKI
|
|
||||||
# Only init-pki is allowed to create a new session
|
|
||||||
# 'init-pki soft' does not delete the old session, delete it now
|
|
||||||
[ -d "$EASYRSA_TEMP_DIR_session" ] && rm -rf "$EASYRSA_TEMP_DIR_session"
|
|
||||||
unset -v EASYRSA_TEMP_DIR_session
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Initialise new temporary session for easyrsa_openssl makesafeconf
|
|
||||||
secure_session || die "install_data_to_pki - secure_session"
|
|
||||||
;;
|
;;
|
||||||
vars-setup)
|
vars-setup)
|
||||||
if [ "$found_vars" ]; then
|
if [ "$found_vars" ]; then
|
||||||
@ -1153,10 +1161,13 @@ sign_req() {
|
|||||||
for i in 1 2 3 4 5; do
|
for i in 1 2 3 4 5; do
|
||||||
"$EASYRSA_OPENSSL" rand -hex -out "$EASYRSA_PKI/serial" 16
|
"$EASYRSA_OPENSSL" rand -hex -out "$EASYRSA_PKI/serial" 16
|
||||||
serial="$(cat "$EASYRSA_PKI/serial")"
|
serial="$(cat "$EASYRSA_PKI/serial")"
|
||||||
|
|
||||||
|
# Calls LibreSSL directly with a broken config and still works
|
||||||
check_serial="$(
|
check_serial="$(
|
||||||
"$EASYRSA_OPENSSL" ca -config "$EASYRSA_SSL_CONF" \
|
"$EASYRSA_OPENSSL" ca -config "$EASYRSA_SSL_CONF" \
|
||||||
-status "$serial" 2>&1
|
-status "$serial" 2>&1
|
||||||
)"
|
)"
|
||||||
|
|
||||||
case "$check_serial" in
|
case "$check_serial" in
|
||||||
*"not present in db"*) break ;;
|
*"not present in db"*) break ;;
|
||||||
*) continue
|
*) continue
|
||||||
@ -2233,8 +2244,11 @@ Sourcing the vars file will probably fail .."
|
|||||||
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI"
|
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI"
|
||||||
set_var EASYRSA_REQ_CN ChangeMe
|
set_var EASYRSA_REQ_CN ChangeMe
|
||||||
set_var EASYRSA_DIGEST sha256
|
set_var EASYRSA_DIGEST sha256
|
||||||
|
|
||||||
set_var EASYRSA_SSL_CONF "$EASYRSA_PKI/openssl-easyrsa.cnf"
|
set_var EASYRSA_SSL_CONF "$EASYRSA_PKI/openssl-easyrsa.cnf"
|
||||||
set_var EASYRSA_SAFE_CONF "$EASYRSA_PKI/safessl-easyrsa.cnf"
|
set_var EASYRSA_SAFE_CONF "$EASYRSA_PKI/safessl-easyrsa.cnf"
|
||||||
|
set_var OPENSSL_CONF "$EASYRSA_SAFE_CONF"
|
||||||
|
|
||||||
set_var EASYRSA_KDC_REALM "CHANGEME.EXAMPLE.COM"
|
set_var EASYRSA_KDC_REALM "CHANGEME.EXAMPLE.COM"
|
||||||
|
|
||||||
# EASYRSA_ALGO_PARAMS must be set depending on selected algo
|
# EASYRSA_ALGO_PARAMS must be set depending on selected algo
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user