Hi, On 17-07-2020 15:47, Arne Schwabe wrote: > The change in name signals that data-ciphers is the preferred way to > configure data channel (and not --cipher). The data prefix is chosen > to avoid ambiguity and make it distinct from tls-cipher for the TLS > ciphers. > > Signed-off-by: Arne Schwabe <a...@rfc2549.org> > --- > Changes.rst | 13 ++++++++++--- > doc/man-sections/protocol-options.rst | 11 +++++++---- > doc/man-sections/server-options.rst | 4 ++-- > sample/sample-config-files/client.conf | 2 +- > src/openvpn/multi.c | 4 ++-- > src/openvpn/options.c | 5 +++-- > src/openvpn/ssl_ncp.c | 4 ++-- > 7 files changed, 27 insertions(+), 16 deletions(-) > > diff --git a/Changes.rst b/Changes.rst > index 6e283270..2158c8e7 100644 > --- a/Changes.rst > +++ b/Changes.rst > @@ -14,12 +14,19 @@ ChaCha20-Poly1305 cipher support > channel. > > Improved Data channel cipher negotiation > + The option ``ncp-ciphers`` has been renamed to ``data-ciphers``. > + The old name is still accepted. The change in name signals that > + ``data-ciphers`` is the preferred way to configure data channel > + ciphers and the data prefix is chosen to avoid the ambiguity that > + exists with ``--cipher`` for the data cipher and ``tls-cipher`` > + for the TLS ciphers. > + > OpenVPN clients will now signal all supported ciphers from the > - ``ncp-ciphers`` option to the server via ``IV_CIPHERS``. OpenVPN > - servers will select the first common cipher from the ``ncp-ciphers`` > + ``data-ciphers`` option to the server via ``IV_CIPHERS``. OpenVPN > + servers will select the first common cipher from the ``data-ciphers`` > list instead of blindly pushing the first cipher of the list. This > allows to use a configuration like > - ``ncp-ciphers ChaCha20-Poly1305:AES-256-GCM`` on the server that > + ``data-ciphers ChaCha20-Poly1305:AES-256-GCM`` on the server that > prefers ChaCha20-Poly1305 but uses it only if the client supports it. > > Asynchronous (deferred) authentication support for auth-pam plugin. > diff --git a/doc/man-sections/protocol-options.rst > b/doc/man-sections/protocol-options.rst > index 923d2da0..051f1d32 100644 > --- a/doc/man-sections/protocol-options.rst > +++ b/doc/man-sections/protocol-options.rst > @@ -62,7 +62,7 @@ configured in a compatible way between both the local and > remote side. > The default is :code:`BF-CBC`, an abbreviation for Blowfish in Cipher > Block Chaining mode. When cipher negotiation (NCP) is allowed, > OpenVPN 2.4 and newer on both client and server side will automatically > - upgrade to :code:`AES-256-GCM`. See ``--ncp-ciphers`` and > + upgrade to :code:`AES-256-GCM`. See ``--data-ciphers`` and > ``--ncp-disable`` for more details on NCP. > > Using :code:`BF-CBC` is no longer recommended, because of its 64-bit > @@ -169,7 +169,7 @@ configured in a compatible way between both the local and > remote side. > non-standard key lengths, and a larger key may offer no real guarantee > of greater security, or may even reduce security. > > ---ncp-ciphers cipher-list > +--data-ciphers cipher-list > Restrict the allowed ciphers to be negotiated to the ciphers in > ``cipher-list``. ``cipher-list`` is a colon-separated list of ciphers, > and defaults to :code:`AES-256-GCM:AES-128-GCM`. > @@ -189,9 +189,9 @@ configured in a compatible way between both the local and > remote side. > Additionally, to allow for more smooth transition, if NCP is enabled, > OpenVPN will inherit the cipher of the peer if that cipher is different > from the local ``--cipher`` setting, but the peer cipher is one of the > - ciphers specified in ``--ncp-ciphers``. E.g. a non-NCP client (<=v2.3, > + ciphers specified in ``--data-ciphers``. E.g. a non-NCP client (<=v2.3, > or with --ncp-disabled set) connecting to a NCP server (v2.4+) with > - ``--cipher BF-CBC`` and ``--ncp-ciphers AES-256-GCM:AES-256-CBC`` set can > + ``--cipher BF-CBC`` and ``--data-ciphers AES-256-GCM:AES-256-CBC`` set can > either specify ``--cipher BF-CBC`` or ``--cipher AES-256-CBC`` and both > will work. > > @@ -201,6 +201,9 @@ configured in a compatible way between both the local and > remote side. > This list is restricted to be 127 chars long after conversion to OpenVPN > ciphers. > > + This option was called ``ncp-ciphers`` in OpenVPN 2.4 but has been renamed > + to ``data-ciphers`` in OpenVPN 2.5 to more accurately reflect its meaning. > + > --ncp-disable > Disable "Negotiable Crypto Parameters". This completely disables cipher > negotiation. > diff --git a/doc/man-sections/server-options.rst > b/doc/man-sections/server-options.rst > index c24aec0b..74ad5e18 100644 > --- a/doc/man-sections/server-options.rst > +++ b/doc/man-sections/server-options.rst > @@ -473,8 +473,8 @@ fast hardware. SSL/TLS authentication must be used in > this mode. > *AES-GCM-128* and *AES-GCM-256*. > > :code:`IV_CIPHERS=<ncp-ciphers>` > - The client pushes the list of configured ciphers with the > - ``--ciphers`` option to the server. > + The client announces the list of supported ciphers configured with > the > + ``--data-ciphers`` option to the server. > > :code:`IV_GUI_VER=<gui_id> <version>` > The UI version of a UI if one is running, for example > diff --git a/sample/sample-config-files/client.conf > b/sample/sample-config-files/client.conf > index 7f2f30a3..47ca4099 100644 > --- a/sample/sample-config-files/client.conf > +++ b/sample/sample-config-files/client.conf > @@ -112,7 +112,7 @@ tls-auth ta.key 1 > # then you must also specify it here. > # Note that v2.4 client/server will automatically > # negotiate AES-256-GCM in TLS mode. > -# See also the ncp-cipher option in the manpage > +# See also the data-ciphers option in the manpage > cipher AES-256-CBC > > # Enable compression on the VPN link. > diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c > index 88ba9db2..d2549bca 100644 > --- a/src/openvpn/multi.c > +++ b/src/openvpn/multi.c > @@ -1827,7 +1827,7 @@ multi_client_set_protocol_options(struct context *c) > else > { > /* > - * Push the first cipher from --ncp-ciphers to the client that > + * Push the first cipher from --data-ciphers to the client that > * the client announces to be supporting. > */ > char *push_cipher = ncp_get_best_cipher(o->ncp_ciphers, > o->ciphername, > @@ -1847,7 +1847,7 @@ multi_client_set_protocol_options(struct context *c) > { > msg(M_INFO, "PUSH: No common cipher between server and " > "client. Expect this connection not to work. Server " > - "ncp-ciphers: '%s', client supported ciphers '%s'", > + "data-ciphers: '%s', client supported ciphers '%s'", > o->ncp_ciphers, peer_ciphers); > } > else > diff --git a/src/openvpn/options.c b/src/openvpn/options.c > index 31e33ae3..896abcde 100644 > --- a/src/openvpn/options.c > +++ b/src/openvpn/options.c > @@ -536,7 +536,7 @@ static const char usage_message[] = > "--cipher alg : Encrypt packets with cipher algorithm alg\n" > " (default=%s).\n" > " Set alg=none to disable encryption.\n" > - "--ncp-ciphers list : List of ciphers that are allowed to be > negotiated.\n" > + "--data-ciphers list : List of ciphers that are allowed to be > negotiated.\n" > "--ncp-disable : (DEPRECATED) Disable cipher negotiation.\n" > "--prng alg [nsl] : For PRNG, use digest algorithm alg, and\n" > " nonce_secret_len=nsl. Set alg=none to disable > PRNG.\n" > @@ -7866,7 +7866,8 @@ add_option(struct options *options, > VERIFY_PERMISSION(OPT_P_NCP|OPT_P_INSTANCE); > options->ciphername = p[1]; > } > - else if (streq(p[0], "ncp-ciphers") && p[1] && !p[2]) > + else if ((streq(p[0], "data-ciphers") || streq(p[0], "ncp-ciphers")) > + && p[1] && !p[2]) > { > VERIFY_PERMISSION(OPT_P_GENERAL|OPT_P_INSTANCE); > options->ncp_ciphers = p[1]; > diff --git a/src/openvpn/ssl_ncp.c b/src/openvpn/ssl_ncp.c > index e057a40b..6760884e 100644 > --- a/src/openvpn/ssl_ncp.c > +++ b/src/openvpn/ssl_ncp.c > @@ -111,7 +111,7 @@ mutate_ncp_cipher_list(const char *list, struct gc_arena > *gc) > const cipher_kt_t *ktc = cipher_kt_get(token); > if (!ktc) > { > - msg(M_WARN, "Unsupported cipher in --ncp-ciphers: %s", token); > + msg(M_WARN, "Unsupported cipher in --data-ciphers: %s", token); > error_found = true; > } > else > @@ -130,7 +130,7 @@ mutate_ncp_cipher_list(const char *list, struct gc_arena > *gc) > if (!(buf_forward_capacity(&new_list) > > strlen(ovpn_cipher_name) + 2)) > { > - msg(M_WARN, "Length of --ncp-ciphers is over the " > + msg(M_WARN, "Length of --data-ciphers is over the " > "limit of 127 chars"); > error_found = true; > } >
Thanks. Patch looks good, and passes manual tests. Acked-by: Steffan Karger <stef...@karger.me> -Steffan _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel