Hi,

On 11-04-17 19:31, David Sommerseth wrote:
> As RHEL 5 has reached EOL, we no longer need to support OpenSSL v0.9.8.
> This also makes it possible to remove a few workaronds which was
> needed earlier, as well as some left overs from v0.9.6.
> 
> This also makes ./configure really stop running unless a new enough
> OpenSSL library is found.
> 
> Compile tested on RHEL7.3 and RHEL6.7 (mock chroot build), both shipping
> openssl-1.0.1e.
> 
> Signed-off-by: David Sommerseth <dav...@openvpn.net>
> ---
>  configure.ac                                                  |  6 +++---
>  doc/openvpn.8                                                 |  1 -
>  .../keying-material-exporter-demo/keyingmaterialexporter.c    |  3 +--
>  sample/sample-plugins/log/log_v3.c                            |  3 +--
>  src/openvpn/ssl_openssl.c                                     |  3 ---
>  src/openvpn/ssl_openssl.h                                     | 11 
> -----------
>  src/openvpn/ssl_verify_openssl.c                              |  6 ++----
>  7 files changed, 7 insertions(+), 26 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 2406ad8..acea060 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -859,9 +859,9 @@ if test "${enable_crypto}" = "yes" -a 
> "${with_crypto_library}" = "openssl"; then
>               # if the user did not explicitly specify flags, try to 
> autodetect
>               PKG_CHECK_MODULES(
>                       [OPENSSL],
> -                     [libcrypto >= 0.9.8, libssl >= 0.9.8],
> -             [have_openssl="yes"],
> -                     [have_openssl="no"] # Provide if-not-found to prevent 
> erroring out
> +                     [libcrypto >= 1.0.1, libssl >= 1.0.1],
> +                     [have_openssl="yes"],
> +                     [AC_MSG_ERROR([Minimum supported OpenSSL version is 
> 1.0.1])]
>               )
>  
>               OPENSSL_LIBS=${OPENSSL_LIBS:--lssl -lcrypto}
> diff --git a/doc/openvpn.8 b/doc/openvpn.8
> index a9f5db7..c3248fd 100644
> --- a/doc/openvpn.8
> +++ b/doc/openvpn.8
> @@ -2773,7 +2773,6 @@ OPENVPN_PLUGIN_TLS_FINAL callback.
>  Note that exporter labels have the potential to collide with existing PRF
>  labels. In order to prevent this, labels MUST begin with "EXPORTER".
>  
> -This option requires OpenSSL 1.0.1 or newer.
>  .\"*********************************************************
>  .SS Server Mode
>  Starting with OpenVPN 2.0, a multi-client TCP/UDP server mode
> diff --git 
> a/sample/sample-plugins/keying-material-exporter-demo/keyingmaterialexporter.c
>  
> b/sample/sample-plugins/keying-material-exporter-demo/keyingmaterialexporter.c
> index 177977d..a72b374 100644
> --- 
> a/sample/sample-plugins/keying-material-exporter-demo/keyingmaterialexporter.c
> +++ 
> b/sample/sample-plugins/keying-material-exporter-demo/keyingmaterialexporter.c
> @@ -143,8 +143,7 @@ session_user_set(struct session *sess, X509 *x509)
>          {
>              continue;
>          }
> -        /* bug in OpenSSL 0.9.6b ASN1_STRING_to_UTF8 requires this 
> workaround */
> -        unsigned char *buf = (unsigned char *)1;
> +        unsigned char *buf = NULL;
>          if (ASN1_STRING_to_UTF8(&buf, val) <= 0)
>          {
>              continue;
> diff --git a/sample/sample-plugins/log/log_v3.c 
> b/sample/sample-plugins/log/log_v3.c
> index 9037225..d3014f3 100644
> --- a/sample/sample-plugins/log/log_v3.c
> +++ b/sample/sample-plugins/log/log_v3.c
> @@ -197,7 +197,7 @@ x509_print_info(X509 *x509crt)
>      X509_NAME *x509_name;
>      X509_NAME_ENTRY *ent;
>      const char *objbuf;
> -    unsigned char *buf;
> +    unsigned char *buf = NULL;
>  
>      x509_name = X509_get_subject_name(x509crt);
>      n = X509_NAME_entry_count(x509_name);
> @@ -228,7 +228,6 @@ x509_print_info(X509 *x509crt)
>          {
>              continue;
>          }
> -        buf = (unsigned char *)1; /* bug in OpenSSL 0.9.6b 
> ASN1_STRING_to_UTF8 requires this workaround */
>          if (ASN1_STRING_to_UTF8(&buf, val) <= 0)
>          {
>              continue;
> diff --git a/src/openvpn/ssl_openssl.c b/src/openvpn/ssl_openssl.c
> index d7cc2ba..645ccf5 100644
> --- a/src/openvpn/ssl_openssl.c
> +++ b/src/openvpn/ssl_openssl.c
> @@ -254,10 +254,7 @@ tls_ctx_set_options(struct tls_root_ctx *ctx, unsigned 
> int ssl_flags)
>              sslopt |= SSL_OP_NO_TLSv1_2;
>          }
>  #endif
> -#ifdef SSL_OP_NO_COMPRESSION
> -        /* Disable compression - flag not available in OpenSSL 0.9.8 */
>          sslopt |= SSL_OP_NO_COMPRESSION;
> -#endif
>          SSL_CTX_set_options(ctx->ctx, sslopt);
>      }
>  
> diff --git a/src/openvpn/ssl_openssl.h b/src/openvpn/ssl_openssl.h
> index 6ca4cb6..60a1f5e 100644
> --- a/src/openvpn/ssl_openssl.h
> +++ b/src/openvpn/ssl_openssl.h
> @@ -33,17 +33,6 @@
>  #include <openssl/ssl.h>
>  
>  /**
> - * SSL_OP_NO_TICKET tells OpenSSL to disable "stateless session resumption",
> - * as this is something we do not want nor need, but could potentially be
> - * used for a future attack.  For compatibility reasons we keep building if 
> the
> - * OpenSSL version is too old (pre-0.9.8f) to support stateless session
> - * resumption (and the accompanying SSL_OP_NO_TICKET flag).
> - */
> -#ifndef SSL_OP_NO_TICKET
> -#define SSL_OP_NO_TICKET 0
> -#endif
> -
> -/**
>   * Structure that wraps the TLS context. Contents differ depending on the
>   * SSL library used.
>   */
> diff --git a/src/openvpn/ssl_verify_openssl.c 
> b/src/openvpn/ssl_verify_openssl.c
> index 5624daa..54eadbd 100644
> --- a/src/openvpn/ssl_verify_openssl.c
> +++ b/src/openvpn/ssl_verify_openssl.c
> @@ -458,8 +458,7 @@ x509_setenv_track(const struct x509_track *xt, struct 
> env_set *es, const int dep
>                          if (ent)
>                          {
>                              ASN1_STRING *val = X509_NAME_ENTRY_get_data(ent);
> -                            unsigned char *buf;
> -                            buf = (unsigned char *)1; /* bug in OpenSSL 
> 0.9.6b ASN1_STRING_to_UTF8 requires this workaround */
> +                            unsigned char *buf = NULL;
>                              if (ASN1_STRING_to_UTF8(&buf, val) > 0)
>                              {
>                                  do_setenv_x509(es, xt->name, (char *)buf, 
> depth);
> @@ -514,7 +513,7 @@ x509_setenv(struct env_set *es, int cert_depth, 
> openvpn_x509_cert_t *peer_cert)
>      ASN1_STRING *val;
>      X509_NAME_ENTRY *ent;
>      const char *objbuf;
> -    unsigned char *buf;
> +    unsigned char *buf = NULL;
>      char *name_expand;
>      size_t name_expand_size;
>      X509_NAME *x509 = X509_get_subject_name(peer_cert);
> @@ -547,7 +546,6 @@ x509_setenv(struct env_set *es, int cert_depth, 
> openvpn_x509_cert_t *peer_cert)
>          {
>              continue;
>          }
> -        buf = (unsigned char *)1; /* bug in OpenSSL 0.9.6b 
> ASN1_STRING_to_UTF8 requires this workaround */
>          if (ASN1_STRING_to_UTF8(&buf, val) <= 0)
>          {
>              continue;
> 

For master: ACK.

For release/2.4: I wonder whether we need to keep 0.9.8 support, as
SLES11 still ships with 0.9.8h, and has general support until 31 Mar 2019.

-Steffan

------------------------------------------------------------------------------
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
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to