@@ -45,7 +45,7 @@ Global options:
4545 (Default config file is in the EasyRSA PKI directory)
4646--force-safe-ssl: Always generate a safe SSL config file
4747 (Default: Generate Safe SSL config once per instance)
48-
48+ --force-vars : Ignore known errors in 'vars' file
4949--no-lockfile : Disable lock-file (Useful for read-only PKI)
5050--no-inline : Disable inline file creation
5151--tmp-dir=DIR : Declare the temporary directory
@@ -2882,7 +2882,7 @@ inline_file() {
28822882 # Allow complete disable
28832883 if [ "$EASYRSA_NO_INLINE" ] || [ "$EASYRSA_DISABLE_INLINE" ]; then
28842884 [ -z "$EASYRSA_DISABLE_INLINE" ] || \
2885- warn ' Use $EASYRSA_NO_INLINE not $EASYRSA_DISABLE_INLINE'
2885+ warn " Use \ $EASYRSA_NO_INLINE not \ $EASYRSA_DISABLE_INLINE"
28862886 verbose "inline_file; DISABLED"
28872887 return
28882888 fi
@@ -5433,7 +5433,7 @@ Option --passout cannot be used with --nopass|nopass."
54335433 fi
54345434
54355435 # Restrict --days=0 to 'show-expire'
5436- if [ "$alias_days " = 0 ]; then
5436+ if [ "$EASYRSA_ALIAS_DAYS " = 0 ]; then
54375437 case "$cmd" in
54385438 show-expire) : ;; # ok
54395439 *) user_error "Cannot use --days=0 for command $cmd"
@@ -5470,12 +5470,12 @@ Format of --startdate/--enddate must be [YY]YYMMDDhhmmssZ"
54705470 if [ "$EASYRSA_END_DATE" ]; then
54715471 case "$cmd" in
54725472 sign-req|build-*-full|renew)
5473- # User specified alias_days IS over-ruled
5474- if [ "$alias_days " ]; then
5473+ # User specified EASYRSA_ALIAS_DAYS IS over-ruled
5474+ if [ "$EASYRSA_ALIAS_DAYS " ]; then
54755475 warn "\
54765476Option --days is over-ruled by option --enddate."
54775477 fi
5478- unset -v EASYRSA_CERT_EXPIRE alias_days
5478+ unset -v EASYRSA_CERT_EXPIRE EASYRSA_ALIAS_DAYS
54795479 ;;
54805480 *)
54815481 warn "\
@@ -5568,61 +5568,74 @@ Missing vars file:
55685568* $target_file"
55695569
55705570 # Sanitize target_file
5571- if grep -q \
5571+ if grep -v '^[[:blank:]]*#' "$target_file" | grep - q \
55725572 -e 'EASYRSA_PASSIN' -e 'EASYRSA_PASSOUT' \
5573- -e '[^(]`[^)]' \
5574- -e 'export ' \
5575- -e 'unset ' \
5576- "$target_file"
5573+ -e '`' \
5574+ -e 'EASYRSA_[_[:upper:]]*=.*' \
5575+ -e 'export[[:blank:]]' \
5576+ -e 'unset[[:blank:]]' \
5577+ # EOL
55775578 then
55785579 # here we go ..
55795580 err_msg="\
5580- These problems have been found in your 'vars' settings:${NL}"
5581+ These problems have been found in your 'vars' settings:
5582+ * $target_file"
55815583
55825584 # No passwords!
5583- if grep -q \
5584- -e 'EASYRSA_PASSIN' -e 'EASYRSA_PASSOUT' \
5585- "$target_file"
5585+ if grep -v '^[[:blank:]]*#' "$target_file" | \
5586+ grep -q -e 'EASYRSA_PASSIN' -e 'EASYRSA_PASSOUT'
55865587 then
5587- err_msg="${err_msg}
5588+ err_msg="${err_msg}${NL}
55885589 Use of 'EASYRSA_PASSIN' or 'EASYRSA_PASSOUT':
55895590 Storing password information in the 'vars' file is not permitted."
5591+ # enforce this rule
5592+ unset -v EASYRSA_FORCE_VARS
55905593 fi
55915594
55925595 # No backticks
5593- if grep -q \
5594- -e '[^(]`[^)]' \
5595- "$target_file"
5596+ if grep -v '^[[:blank:]]*#' "$target_file" | \
5597+ grep -q -e '`'
55965598 then
5597- err_msg="${err_msg}
5599+ err_msg="${err_msg}${NL}
55985600 Use of unsupported characters:
55995601 These characters are not supported: \` backtick"
56005602 fi
56015603
5604+ # No standard assignment by '='
5605+ if grep -v '^[[:blank:]]*#' "$target_file" | \
5606+ grep -q -e 'EASYRSA_[_[:upper:]]*='
5607+ then
5608+ err_msg="${err_msg}${NL}
5609+ Assignment by '=':
5610+ Remove '=' and replace it with 'set_var'."
5611+ fi
5612+
56025613 # No export
5603- if grep -q \
5604- -e 'export ' \
5605- "$target_file"
5614+ if grep -v '^[[:blank:]]*#' "$target_file" | \
5615+ grep -q -e 'export[[:blank:]]'
56065616 then
5607- err_msg="${err_msg}
5617+ err_msg="${err_msg}${NL}
56085618 Use of 'export':
56095619 Remove 'export' or replace it with 'set_var'."
56105620 fi
56115621
56125622 # No unset
5613- if grep -q \
5614- -e 'unset ' \
5615- "$target_file"
5623+ if grep -v '^[[:blank:]]*#' "$target_file" | \
5624+ grep -q -e 'unset[[:blank:]]'
56165625 then
5617- err_msg="${err_msg}
5626+ err_msg="${err_msg}${NL}
56185627 Use of 'unset':
56195628 Remove 'unset' ('force_set_var' may also work)."
56205629 fi
56215630
56225631 # Fatal error
5623- user_error "${err_msg}${NL}
5632+ if [ "$EASYRSA_FORCE_VARS" ]; then
5633+ warn "${err_msg}"
5634+ verbose "source_vars; ignore 'vars' errors"
5635+ else
5636+ user_error "${err_msg}${NL}
56245637Please, correct these errors and try again."
5625-
5638+ fi
56265639 fi
56275640
56285641 # Enable sourcing target_file
@@ -5631,7 +5644,7 @@ Please, correct these errors and try again."
56315644
56325645 # Test sourcing target_file in a subshell
56335646 # shellcheck disable=1090 # can't follow - source_vars()
5634- if ( . "$target_file" ); then
5647+ if ( set -e; . "$target_file" 2>/dev/null ); then
56355648 # Source target_file now
56365649 # shellcheck disable=1090 # can't follow - source_vars()
56375650 . "$target_file" || \
@@ -5640,8 +5653,11 @@ Please, correct these errors and try again."
56405653 die "Failed to dry-run the '$target_file' file."
56415654 fi
56425655
5656+ # Protect $EASYRSA_ALIAS_DAYS from vars abuse
5657+ [ "$EASYRSA_ALIAS_DAYS" = undefined ] && unset -v EASYRSA_ALIAS_DAYS
5658+
56435659 verbose "source_vars; sourced $target_file"
5644- unset -v EASYRSA_CALLER target_file
5660+ unset -v EASYRSA_CALLER target_file err_msg
56455661} # => source_vars()
56465662
56475663# Set defaults
@@ -5807,6 +5823,20 @@ Using Easy-RSA 'vars' configuration:
58075823* $EASYRSA_VARS_FILE"
58085824 fi
58095825
5826+ # Initialisation requirements
5827+ unset -v \
5828+ OPENSSL_CONF \
5829+ verify_ssl_lib_ok ssl_batch \
5830+ secured_session write_recursion \
5831+ text prohibit_no_pass \
5832+ quiet_vars invalid_vars \
5833+ local_request error_build_full_cleanup \
5834+ selfsign_eku \
5835+ internal_batch mv_temp_error \
5836+ easyrsa_exit_with_error error_info \
5837+ require_pki require_ca \
5838+ prompt_restore mktemp_counter
5839+
58105840 # then set defaults
58115841 default_vars
58125842
@@ -6626,19 +6656,10 @@ trap "exit 15" 15
66266656# Get host details - No configurable input allowed
66276657detect_host
66286658
6629- # Initialisation requirements
6630- unset -v \
6631- OPENSSL_CONF \
6632- verify_ssl_lib_ok ssl_batch \
6633- secured_session write_recursion \
6634- alias_days text prohibit_no_pass \
6635- quiet_vars invalid_vars \
6636- local_request error_build_full_cleanup \
6637- selfsign_eku \
6638- internal_batch mv_temp_error \
6639- easyrsa_exit_with_error error_info \
6640- require_pki require_ca \
6641- prompt_restore mktemp_counter
6659+ # Protect variables from alteration by sourcing vars file
6660+ # undocumented, not designed for use
6661+ export EASYRSA_ALIAS_DAYS=undefined # protect from sourcing vars
6662+ unset -v EASYRSA_FORCE_VARS # has no effect after sourcing vars
66426663
66436664# Parse options
66446665while :; do
@@ -6662,7 +6683,7 @@ while :; do
66626683 zero_allowed=1
66636684 # Set the appropriate date variable
66646685 # when called by command later
6665- alias_days ="$val"
6686+ export EASYRSA_ALIAS_DAYS ="$val"
66666687 ;;
66676688 --startdate)
66686689 export EASYRSA_START_DATE="$val"
@@ -6773,6 +6794,7 @@ while :; do
67736794 -v|--verbose)
67746795 empty_ok=1
67756796 export EASYRSA_VERBOSE=1
6797+ fn_name="Easy-RSA version" verbose "$EASYRSA_version"
67766798 ;;
67776799 -S|--silent-ssl)
67786800 empty_ok=1
@@ -6782,6 +6804,10 @@ while :; do
67826804 empty_ok=1
67836805 export EASYRSA_FORCE_SAFE_SSL=1
67846806 ;;
6807+ --force-vars)
6808+ empty_ok=1
6809+ export EASYRSA_FORCE_VARS=1
6810+ ;;
67856811 --nopass|--no-pass)
67866812 empty_ok=1
67876813 export EASYRSA_NO_PASS=1
@@ -6916,20 +6942,20 @@ case "$cmd" in
69166942 ;;
69176943 build-ca)
69186944 require_pki=1; require_ca=""; verify_working_env
6919- [ -z "$alias_days " ] || \
6920- export EASYRSA_CA_EXPIRE="$alias_days "
6945+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6946+ export EASYRSA_CA_EXPIRE="$EASYRSA_ALIAS_DAYS "
69216947 build_ca "$@"
69226948 ;;
69236949 self-sign-server)
69246950 require_pki=1; require_ca=""; verify_working_env
6925- [ -z "$alias_days " ] || \
6926- export EASYRSA_CERT_EXPIRE="$alias_days "
6951+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6952+ export EASYRSA_CERT_EXPIRE="$EASYRSA_ALIAS_DAYS "
69276953 self_sign server "$@"
69286954 ;;
69296955 self-sign-client)
69306956 require_pki=1; require_ca=""; verify_working_env
6931- [ -z "$alias_days " ] || \
6932- export EASYRSA_CERT_EXPIRE="$alias_days "
6957+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6958+ export EASYRSA_CERT_EXPIRE="$EASYRSA_ALIAS_DAYS "
69336959 self_sign client "$@"
69346960 ;;
69356961 self*)
@@ -6945,32 +6971,32 @@ case "$cmd" in
69456971 ;;
69466972 sign|sign-req)
69476973 require_pki=1; require_ca=1; verify_working_env
6948- [ -z "$alias_days " ] || \
6949- export EASYRSA_CERT_EXPIRE="$alias_days "
6974+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6975+ export EASYRSA_CERT_EXPIRE="$EASYRSA_ALIAS_DAYS "
69506976 sign_req "$@"
69516977 ;;
69526978 build-client-full)
69536979 require_pki=1; require_ca=1; verify_working_env
6954- [ -z "$alias_days " ] || \
6955- export EASYRSA_CERT_EXPIRE="$alias_days "
6980+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6981+ export EASYRSA_CERT_EXPIRE="$EASYRSA_ALIAS_DAYS "
69566982 build_full client "$@"
69576983 ;;
69586984 build-server-full)
69596985 require_pki=1; require_ca=1; verify_working_env
6960- [ -z "$alias_days " ] || \
6961- export EASYRSA_CERT_EXPIRE="$alias_days "
6986+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6987+ export EASYRSA_CERT_EXPIRE="$EASYRSA_ALIAS_DAYS "
69626988 build_full server "$@"
69636989 ;;
69646990 build-serverClient-full)
69656991 require_pki=1; require_ca=1; verify_working_env
6966- [ -z "$alias_days " ] || \
6967- export EASYRSA_CERT_EXPIRE="$alias_days "
6992+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6993+ export EASYRSA_CERT_EXPIRE="$EASYRSA_ALIAS_DAYS "
69686994 build_full serverClient "$@"
69696995 ;;
69706996 gen-crl)
69716997 require_pki=1; require_ca=1; verify_working_env
6972- [ -z "$alias_days " ] || \
6973- export EASYRSA_CRL_DAYS="$alias_days "
6998+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
6999+ export EASYRSA_CRL_DAYS="$EASYRSA_ALIAS_DAYS "
69747000 gen_crl
69757001 ;;
69767002 revoke|revoke-issued)
@@ -7049,20 +7075,20 @@ case "$cmd" in
70497075 ;;
70507076 renew-ca)
70517077 require_pki=1; require_ca=1; verify_working_env
7052- [ -z "$alias_days " ] || \
7053- export EASYRSA_CA_EXPIRE="$alias_days "
7078+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
7079+ export EASYRSA_CA_EXPIRE="$EASYRSA_ALIAS_DAYS "
70547080 renew_ca_cert "$@"
70557081 ;;
70567082 renew)
70577083 require_pki=1; require_ca=1; verify_working_env
7058- [ -z "$alias_days " ] || \
7059- export EASYRSA_CERT_EXPIRE="$alias_days "
7084+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
7085+ export EASYRSA_CERT_EXPIRE="$EASYRSA_ALIAS_DAYS "
70607086 renew "$@"
70617087 ;;
70627088 show-expire)
70637089 require_pki=1; require_ca=1; verify_working_env
7064- [ -z "$alias_days " ] || \
7065- export EASYRSA_PRE_EXPIRY_WINDOW="$alias_days "
7090+ [ -z "$EASYRSA_ALIAS_DAYS " ] || \
7091+ export EASYRSA_PRE_EXPIRY_WINDOW="$EASYRSA_ALIAS_DAYS "
70667092 status expire "$@"
70677093 ;;
70687094 show-revoke)
0 commit comments