1002 Commits

Author SHA1 Message Date
Anders Blomdell
d56dbcf300 Get rid of non-existing find command 2022-05-05 19:34:24 +02:00
Anders Blomdell
5c1a77cf66 Get rid of bash arrays, we know that certificate names does not contain whitespace 2022-05-04 14:47:48 +02:00
Anders Blomdell
70b388f0a2 Add command for testing which certificates are eligible for renewal 2022-05-04 12:49:51 +02:00
Richard T Bonhomme
814fab9bd3
Make cert_dates() '--fix-offset' Windows compatible
date.exe does not support output format '+%s' as input.

Instead, use date.exe "string" not seconds since epoch.

Also, force easyrsa_openssl() 'makesafeconf' to move the the temp-file
to the target file.  Otherwise, Windows users are expected to confirm
over-write, every time.

Also, minor variable name changes, for clarity.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-05-04 00:09:18 +01:00
Richard T Bonhomme
3b8f9137b0
Do not declare EASYRSA_FIX_OFFSET, must be set by user only
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-05-03 20:53:45 +01:00
Richard T Bonhomme
7a5212c9a9
Introduce '--fix-offset' for fixed start/end date certificates
The initial idea was to mask the actual certificate creation date.
The reason was to further anonymise user certificates. (YMMV)

There is now a second part to this date "fixing":
* This allows for all certificates to expire on the same day.

Using command option '--fix-offset=nnn', all certificates will be created
* with a 'notBefore' date of January 1st of the current year.
* with a 'notAfter' date of the day-of-year number from '--fix-offset',
  in the final year, as per EASYRSA_CERT_EXPIRE (Default 825 days).
  The default 825 days results in 2 years plus the offset given.

This can also be set in the 'vars' file, for convenience.

The default day-of-year offered is 183; either July 2 or 3 (leap year).

Follow-up to: #550 (Replaces 'nodatetime' with '--fix-offset')

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-05-03 20:25:00 +01:00
Richard T Bonhomme
8c5ee3df1b
Merge branch 'ValdikSS-startdate-year-v3'
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-05-03 20:16:50 +01:00
Richard T Bonhomme
1620cfe0d1 Merge branch 'startdate-year-v3' of ssh://github.com/ValdikSS/easy-rsa-ipsec into ValdikSS-startdate-year-v3 2022-05-03 20:15:29 +01:00
Richard T Bonhomme
7ee6526b77
Merge branch 'AndersBlomdell-master'
With general code style improvements.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-05-03 19:39:54 +01:00
Anders Blomdell
13cc6034e4 Display certificates in UTF8 2022-05-02 17:13:31 +02:00
Richard T Bonhomme
8d1be1c9cf
Only set a temp-dir session name _if_ temp-dir session was created
Also, minor log improvement to op-test.sh

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-05-01 22:21:20 +01:00
ValdikSS
8458f65016 nodatetime: use CA day of creation for notAfter of issuing certificate 2022-04-30 02:08:11 +03:00
ValdikSS
f77951d058 Set notBefore/notAfter to the beginning of the year
This modification adds "nodatetime" argument to build-client-full
and build-server-full which issues the certificate with notBefore
and notAfter date set to 1 Jan, with difference in the year only.

It could be useful for a VPN service to prevent client and server
certificate generation date and time disclosure.
2022-04-30 00:37:19 +03:00
Richard T Bonhomme
26dd7af541
Add label '%COPY_EXTS%' for --copy-ext feature
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-29 14:20:53 +01:00
Richard T Bonhomme
b17499d2ef
Option '--copy-ext' insert "copy_extensions = copy" into config
For '--copy-ext' the "copy_extensions = copy" must be inserted into
the SSL config file, section [defaul_ca]. As with all other insertions,
use the same 'awk' script with a new label '%COPY_EXTS%'.

Closes: #548

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-29 13:57:10 +01:00
Richard T Bonhomme
c4802de368
Improve --subject-alt-name
Add '--san' option alias name and reformat help to include '--san'.

Refactor code for readability.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-29 12:19:21 +01:00
Richard T Bonhomme
13b2fc36cb
Use a fake function to declare variables for shellcheck 2154
EasyRSA set_var() is not known by shellcheck, so "fake declare"
variables that otherwise incorrectly trigger SC2154.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-29 00:41:27 +01:00
Richard T Bonhomme
63dd27a98b
Improve/simplify Fatal error: Missing *expected* "$val" to "$opt"
Fatal errors should be precisely coded, not "obfuscated".

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 22:47:03 +01:00
Richard T Bonhomme
a3db60f229
Always make a safe SSL config file for LibreSSL
LibreSSL chokes on 'rand' without a config file and dies on the
standard config file.

A common fix would be to redirect error out to '/dev/null' but this
would obviously mask all error messages, which is not satisfactory.

Instead, always make a safe config file before the temporary session
directory and any temp-files are required.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 21:02:16 +01:00
Richard T Bonhomme
5e57887c39
Harden sourcing vars and warn for potential problems
In 'org' mode, fields such as EASYRSA_REQ_ORG can be abused.

If the field contains single quote ('), ampersand (&), back-tick (`),
dollar sign ($) or hash (#) then the result is undefined.

Due to EasyRSA running on Linux and Windows and supporting multiple
SSL Libraries, it is not feasible to support these characters.

Add a check to determine if any unsupported characters are found in
the vars file and issue a warning if they are found.

Add a sub-shell test to source vars.  If the test fails then exit
gracefully, with a specific error message.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 18:52:21 +01:00
Richard T Bonhomme
ecbc6103bc
Move "detect host" to a separate function
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 18:45:58 +01:00
Richard T Bonhomme
05b969df82
Improve 'revoke-renewed' success message
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 18:42:01 +01:00
Richard T Bonhomme
c52073422d
Rename $want_init_pki to $no_pki_required (NFC)
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 16:05:06 +01:00
Richard T Bonhomme
071405b1d5
Use $EASYRSA_DIGEST instead of hard-coded 'digest=-sha256'
Also, remove a duplicate EASYRSA_DIGEST in easyrsa_openssl().

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 15:03:49 +01:00
Richard T Bonhomme
fac4abf074
Make inline file failure only a warning
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 14:25:20 +01:00
Richard T Bonhomme
0248064235
Purge $req_opts from build_full()
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 14:19:47 +01:00
Richard T Bonhomme
410a3d3286
Purge $opts from sign_req()
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 13:59:07 +01:00
Richard T Bonhomme
2194c215f3
Purge $opts from gen_req()
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 13:48:55 +01:00
Richard T Bonhomme
34ad764d99
Use file-name $EASYRSA_ALGO_PARAMS to output test elliptic curve
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 12:54:44 +01:00
Richard T Bonhomme
71076aa608
Corrections to help text (NFC)
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 12:52:38 +01:00
Richard T Bonhomme
61182c5fe1
Update help for 'revoke-renewed'
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 00:33:57 +01:00
Richard T Bonhomme
0e2cf100a8
Simplify 'case' for revocation reasons list
Effects: revoke and revoke-renewed

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-28 00:13:46 +01:00
Richard T Bonhomme
8df0346f39
Minor improvements to revoke/renew/revoke-renewed
Tested manually.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 23:35:50 +01:00
Richard T Bonhomme
ac12dad028
General improvements to revoke/renew/revoke-renewed
Ensure that declaration of file-names which are from serial-numbers
are declared after the serial-number has been extracted.

Move confirmation prompts to the last point before action.

Correct and improve #comments, "prompts" and "error messages".

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 22:31:19 +01:00
Richard T Bonhomme
345341013c
ChangeLog: Add 'revoke-renewed'
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 21:21:27 +01:00
Richard T Bonhomme
590c9787e7
Merge branch 'TinCanTech-revoke-renewed'
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 20:10:03 +01:00
Richard T Bonhomme
ef22701878
Introduce 'revoke-renewed'
When easyrsa "renews" a certificate, the current certificate is moved
to a sub-directory for renewed certificates and renamed to the serial
number of the certificate.

This makes it difficult to subsequently revoke the old certificate.

The new behaviour is for easyrsa to move the certificate without
renaming the file.  This means the certificate can be revoked by name.

Once a renewed certificate is revoked, it is moved to the 'revoked'
sub-directory, along with all other revoked certificates.

The same mechanism also manages keys, requests, PKCS and inline files.

Behaviour summary:

* revoke moves certificates to 'revoked' - Unchanged
  Rename the certificate to its serial number - Unchanged

* renew moves certificates to 'renewed' - Unchanged
  renew does not rename the certificate to its serial number - Changed

  Important:
  Only one certificate of a specific name (eg. john) can be renewed
  at the same time.
  To renew another certificate called 'john' the first MUST be revoked.

* revoke-renewed:
  takes the certificate from 'renewed' - Changed
  moves the certifiate to 'revoked' - Changed
  renames the certificate to its serial number - Unchanged

* All revoked certificates are moved to the 'revoked' sub-directory.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 19:27:34 +01:00
Richard T Bonhomme
0238b5cdba
When $want_init_pki is set then also skip session setup
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 14:39:24 +01:00
Richard T Bonhomme
f5a3950699
Merge branch 'TinCanTech-revoke-v2'
Plus a minor correction to order of checks.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 11:40:59 +01:00
Richard T Bonhomme
7914255760
Add "reason" check
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 03:28:23 +01:00
Richard T Bonhomme
fdcaf6cf79
revoke(): Purge unquoted $opts + General improvements
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-27 02:40:11 +01:00
Richard T Bonhomme
3cff9494af
Consolidate 'nopass' for PKCS export functions
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-26 17:51:00 +01:00
Richard T Bonhomme
c1765bb54f
Add 'nopass' option to 'export-p12' command
Plus a minor correction to white-space.

Closes: #411

Original commit:

commit e93af47b0112b13e221a1bf28d36afaf5f5719df
Author: itaru2622 <itaru2622@gmaiil.com>
Date:   Wed Oct 7 20:47:26 2020 +0900

    supporting nopass option for export-p12

    usage:
      easyrsa export-p12 EntityName nopass

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-26 15:51:50 +01:00
Richard T Bonhomme
d9ec677ac7
Introduce 'show-crl'
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-26 00:44:37 +01:00
Richard T Bonhomme
a703f30e37
Only log SSL Library version once
Move the 'fi' below the output, restore old behaviour.

Minor improvments to readability:
* Make "No Safe SSL config-file" the default.
  OpenSSL does not require a "Safe" config-file, only LibreSSL does.
  Change from $no_safe_ssl_conf to $require_safe_ssl_conf.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-25 22:56:28 +01:00
Richard T Bonhomme
d199389217
Introduce 'show-crl' - Simply show the CRL -text (No options)
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-25 21:19:22 +01:00
Richard T Bonhomme
8e8a11be1d
Align help text
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-25 20:01:59 +01:00
Richard T Bonhomme
dafaab0890
Always use SSL library directly for 'rand'
EasyRSA requires the output of the 'rand' command, not a file.
When EASYRSA_DEBUG is enabled the dubug output interferes with
easyrsa random requirements.

Also, disable using easyrsa_openssl() for rand.

Also, always die on SSL errors for random number generation.

Also, minor improvements to error messages.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-25 19:08:23 +01:00
Richard T Bonhomme
8ed43f9c67
Minor improvements and corrections to export_pkcs() and related help
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-25 16:25:00 +01:00
Richard T Bonhomme
30954cfdb6
Merge branch 'nkakouros-pkcs1'
Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
2022-04-25 16:01:37 +01:00