On 10/04/17 11:15, Steffan Karger wrote: > This allows the user to specify what certificate crypto algorithms to > support. The supported profiles are 'preferred' (default), 'legacy' and > 'suiteb', as discussed in <[email protected]> > (https://www.mail-archive.com/[email protected]/msg14214.html). > > This only implements the feature for mbed TLS builds, because for mbed it > is both more easy to implement and the most relevant because mbed TLS 2+ > is by default somewhat restrictive by requiring 2048-bit+ for RSA keys. > > Signed-off-by: Steffan Karger <[email protected]> > --- > src/openvpn/options.c | 8 ++++++++ > src/openvpn/options.h | 1 + > src/openvpn/ssl.c | 3 +++ > src/openvpn/ssl_backend.h | 10 ++++++++++ > src/openvpn/ssl_mbedtls.c | 51 > +++++++++++++++++++++++++++++++++++++++++++++++ > src/openvpn/ssl_mbedtls.h | 1 + > src/openvpn/ssl_openssl.c | 6 ++++++ > 7 files changed, 80 insertions(+) > [...snip...] > diff --git a/src/openvpn/ssl_mbedtls.c b/src/openvpn/ssl_mbedtls.c > index ba8dadf..1fcee72 100644 > --- a/src/openvpn/ssl_mbedtls.c > +++ b/src/openvpn/ssl_mbedtls.c [...snip...] > void > +tls_ctx_set_cert_profile(struct tls_root_ctx *ctx, const char *profile) > +{ > + if (0 == strcmp(profile, "preferred"))
While you do say in the docs that profile MAY NOT be NULL, this will
cause a SEGV if it happens. Wouldn't it be better better to either
report an error or ASSERT() if profile == NULL?
> + {
> + ctx->cert_profile = openvpn_x509_crt_profile_preferred;
> + }
> + else if (0 == strcmp(profile, "legacy"))
> + {
> + ctx->cert_profile = openvpn_x509_crt_profile_legacy;
> + }
> + else if (0 == strcmp(profile, "suiteb"))
> + {
> + ctx->cert_profile = openvpn_x509_crt_profile_suiteb;
> + }
> + else
> + {
> + msg (M_FATAL, "ERROR: Invalid cert profile: %s", profile);
> + }
> +}
[...snip...]
> --- a/src/openvpn/ssl_openssl.c
> +++ b/src/openvpn/ssl_openssl.c
> @@ -384,6 +384,12 @@ tls_ctx_restrict_ciphers(struct tls_root_ctx *ctx, const
> char *ciphers)
> }
>
> void
> +tls_ctx_set_cert_profile(struct tls_root_ctx *ctx, const char *profile)
> +{
> + msg (M_WARN, "WARNING: --tls-cert-profile not supported for OpenSSL");
> +}
> +
While I do understand the use of M_WARN here. Wouldn't it be better to
use M__NONFATAL and make it more a like an "INFO" log line instead.
--tls-cert-profile is a brand new feature, where certificate profiles
are not (yet?) implemented for OpenSSL. So that's strictly not a
warning of more critical aspects. But it is however important to
highlight it.
Otherwise, I think this makes sense. It would be good to have something
similar for OpenSSL too, to be feature complete against mbed TLS.
It seems usage() is lacking details about --tls-cert-profile for the
--help screen.
I have reviewed this by also comparing the implementation to what's done
in OpenVPN 3 [1]. The profile declaration and enabling it seems to be
very much aligned. (on a side note, I have already added a default
profile for "legacy" in Fedora, as many users complained about OpenVPN
breaking on Fedora 26 and newer, which also looks fairly recognisable to
what is done here).
I will run some real tests tomorrow. But quick smoke testing looks good.
--
kind regards,
David Sommerseth
OpenVPN Technologies, Inc
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Openvpn-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openvpn-devel
