Am 07.06.2019 um 22:46 schrieb David Sommerseth: > On 10/05/2019 14:11, Arne Schwabe wrote: >> This unifies our key generation and also migrates the generation >> of the tls-crypt-v2 keys. Since tls-crypt-v2 is not included in any >> released version, we remove the the old syntax without compatibility. >> --- >> doc/openvpn.8 | 79 +++++++++++++++++++++++-------------------- >> src/openvpn/init.c | 61 ++++++++++++++++++++------------- >> src/openvpn/options.c | 67 ++++++++++++++++++++++-------------- >> src/openvpn/options.h | 11 ++++-- >> 4 files changed, 131 insertions(+), 87 deletions(-) >> >> diff --git a/doc/openvpn.8 b/doc/openvpn.8 >> index ce440447..90a6be91 100644 >> --- a/doc/openvpn.8 >> +++ b/doc/openvpn.8 >> @@ -5242,7 +5242,7 @@ Use client\-specific tls\-crypt keys. >> For clients, >> .B keyfile >> is a client\-specific tls\-crypt key. Such a key can be generated using the >> -.B \-\-tls\-crypt\-v2\-genkey >> +.B \-\-genkey tls\-crypt\-v2\-client >> option. >> >> For servers, >> @@ -5250,7 +5250,7 @@ For servers, >> is used to unwrap client\-specific keys supplied by the client during >> connection >> setup. This key must be the same as the key used to generate the >> client\-specific key (see >> -.B \-\-tls\-crypt\-v2\-genkey\fR). >> +.B \-\-genkey tls\-crypt\-v2\-client\fR). >> >> On servers, this option can be used together with the >> .B \-\-tls\-auth >> @@ -5260,36 +5260,6 @@ option. In that case, the server will detect whether >> the client is using >> client\-specific keys, and automatically select the right mode. >> .\"********************************************************* >> .TP >> -.B \-\-tls\-crypt\-v2\-genkey client|server keyfile [metadata] >> - >> -If the first parameter equals "server", generate a \-\-tls\-crypt\-v2 server >> -key and store the key in >> -.B keyfile\fR. >> - >> - >> -If the first parameter equals "client", generate a \-\-tls\-crypt\-v2 client >> -key, and store the key in >> -.B keyfile\fR. >> - >> -If supplied, include the supplied >> -.B metadata >> -in the wrapped client key. This metadata must be supplied in >> base64\-encoded >> -form. The metadata must be at most 735 bytes long (980 bytes in base64). >> - >> -If no metadata is supplied, OpenVPN will use a 64\-bit unix timestamp >> -representing the current time in UTC, Rencoded in network order, as >> metadata for >> -the generated key. >> - >> -A tls\-crypt\-v2 client key is wrapped using a server key. To generate a >> -client key, the user must therefore supply the server key using the >> -.B \-\-tls\-crypt\-v2 >> -option. >> - >> -Servers can use >> -.B \-\-tls\-crypt\-v2\-verify >> -to specify a metadata verification command. >> -.\"********************************************************* >> -.TP >> .B \-\-tls\-crypt\-v2\-verify cmd >> >> Run command >> @@ -5741,13 +5711,18 @@ Show all available elliptic curves to use with the >> .B \-\-ecdh\-curve >> option. >> .\"********************************************************* >> -.SS Generate a random key: >> -Used only for non\-TLS static key encryption mode. >> +.SS Generating random key material: > "Random key material" sounds a bit odd. Is it important for most end-users > that we emphasize "random"? Isn't enough saying: "Generating key material"? > >> .\"********************************************************* >> .TP >> -.B \-\-genkey file >> +.B \-\-genkey keytype keyfile >> (Standalone) >> -Generate a random key to be used as a shared secret, for use with the >> +Generate a random key to be used of the type keytype. if keyfile is left >> out or empty >> +the key will be output on stdout. See the following sections for the >> different keytypes. > Same as the comment above. > > There is also some odd and unexpected behaviour, some which I already touched > in my initial review overview mail. > > $ openvpn --genkey > [new static key is sent to stdout, this is fine] > > $ openvpn --genkey --secret test.key > [new static key saved to test.key, this is fine] > > $ openvpn --genkey secret > [new static key is sent to stdout, this is fine] > > $ openvpn --genkey secret --secret test.key > [new static key is saved to test.key, this is fine] > > $ openvpn --genkey auth-token > [new static key is sent to stdout, this is fine] > > $ openvpn --genkey auth-token --secret test.key > [new static key is sent to stdout - huh!?] > > $ openvpn --genkey tls-crypt --secret test.key > [new static key is saved to test.key, this is fine] > > $ openvpn --genkey tls-crypt-v2-server --secret test.key > [new static key is sent to stdout - huh!?] I will add an error if genkey is used with -secret for anything other than secret.
> This behaviour change with/without --secret where it sometimes writes file to > stdout, sometimes to file is confusing. *I* know why, but users not diving > into the code does not. > > I also know filename can be given as an argument to --genkey. So I propose > that we either ditch --secret with --genkey all together. OpenVPN 2.5 is a > new major release, we can allow such a change; it will not break existing > configuration files. By not allowing --secret to be used with --genkey, we > avoid this ambiguity. For 2.5 I would rather have a warning telling that --gen-key --secret filename is deprecated in favour of --gen-key secret filename in 2.5 and will be removed in the next version. > We could consider to support --secret properly with --genkey, but that will > make the '--genkey tls-crypt-v2-client KEYFILE [METADATA]' trickier and less > consistent. If --secret is present, should that remove the need for KEYFILE, > should KEYFILE overrule --secret or should KEYFILE be ignored? This makes it > much less consistent. > > Another challenge: Currently we cannot generate tls-crypt-v2-client keys to > stdout with METADATA. > > Should we rather do what other *nix programs often do, use '-' as and > indication for "write to stdout"? Or have a specific keyword (like > 'stdout:')? Hm, using - seems to be the standard way but we need to check if there are other instances where we need to support - then too, to not make it inconsistent. Arne _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel