OpenConnect 3.99 release (4.00 beta)

David Woodhouse dwmw2 at infradead.org
Wed Jun 13 19:24:58 EDT 2012


This is a prerelease of v4.00 to get a little more testing.

The main thing it does is add GnuTLS support. It supports PKCS#11 crypto
tokens, and also TPM keys. Thanks to Carolin Latze for the TPM support,
and especially to Nikos Mavrogiannopoulos for a lot of other help in
getting GnuTLS working, including DTLS support.

It still uses OpenSSL by default, unless you pass '--with-gnutls' on the
configure command line. If you aren't using a version of GnuTLS which
supports Cisco-DTLS, it'll still fall back to using OpenSSL for that,
while using GnuTLS for the HTTPS part.

Places where the library used to expose an OpenSSL 'X509' structure now
expose a generic pointer. It *might* be an X509, or it might be a
gnutls_x509_crt_t. There are functions to do various operations on it
(fingerprint, pretty-print as text) that the auth-dialogs were doing,
and a function to export it in DER form if an auth-dialog wants to do
something more advanced. All the callbacks for user interaction are also
cleaned up to use the ->process_auth_form() method, so auth-dialogs no
longer need to capture the OpenSSL UI method calls.

Note that TPM support is only available with GnuTLS 3.x; if you're stuck
on GnuTLS 2.12 then please file a bug with your Linux distribution to
get it updated. GnuTLS 3.0 was released almost a year ago! Other
functionality is subtly substandard when used with GnuTLS 2.12 too.

This release also also adds a $CISCO_SPLIT_DNS variable when invoking
vpnc-script, with a comma-separated list of search domains. (Patches to
vpnc-script welcome; NetworkManager is already updated.)

Finally it improves the MTU configuration to improve connectivity with
new servers by allowing different MTU for CSTP and DTLS connections.
Although it's not clear how Cisco's scheme for this is intended to work;
it looks like it'd work a lot better if their server didn't give an
artificially low MSS when accepting the TCP connection.

Oh, and the --cert-type option is gone from the command line. We've been
automatically detecting that for a *long* time, so the option was
unneeded.

ftp://ftp.infradead.org/pub/openconnect/openconnect-3.99.tar.gz
ftp://ftp.infradead.org/pub/openconnect/openconnect-3.99.tar.gz.asc

David Woodhouse (137):
      Add --with-pkgconfigdir to allow different environments like FreeBSD
      Make openconnect_open_https() and openconnect_close_https() more forgiving.
      Fix non-blocking support in fetch_config()
      Use openconnect_open_https() and openconnect_close_https() better.
      Add gnutls support to build system
      Fix API major/minor handling for out-of-source-tree build
      Move peer_cert handling to openconnect_open_https()
      Add openconnect_get_cert_details() function
      Add openconnect_sha1() function and use it instead of using OpenSSL directly
      Move basic process_auth_form() out to main.c
      Be more self-sufficient with header inclusions
      Add openconnect_get_cert_DER() function
      Add openconnect_random() function
      Split out connect_https_socket() function from openconnect_open_https()
      Move OpenSSL-specific functions from ssl.c to openssl.c
      Disable DTLS for GnuTLS build for now
      Remove OpenSSL dependency from http.c
      Add SSL library definition to CFLAGS in openconnect.pc
      Introduce semi-opaque OPENCONNECT_X509 type in library API
      Add barely functional GnuTLS support
      Refuse to build with GnuTLS < 2.12.16
      Make CSTP connection in a single SSL record
      Improve GnuTLS compatibility options
      Add client certificate support for GnuTLS
      Check cert expiry, at least for PEM certs
      Clean up GnuTLS PKCS#12 handling a little
      Add server certificate validation for GnuTLS
      Import pkcs12_parse() function from GnuTLS to fix PKCS#12 handling
      Make GnuTLS parse_pkcs12() return extra certificates from the PKCS#12 too
      GnuTLS: Add supporting certificates from PKCS#12 file
      Remove unused workaround_openssl_certchain_bug() function
      GnuTLS: Load trusted CAs before loading certificate
      GnuTLS: Import more than one certificate from PEM file
      Add GnuTLS to changelog
      Add openssl.c and gnutls.c to POTFILES
      Remove duplicate socket connect code from gnutls.c
      Fix vpninfo->peer_cert handling for GnuTLS
      Move openconnect_SSL_printf() to ssl.c
      Fix build on systems without O_CLOEXEC
      Remove stray debug printf
      Fix GnuTLS select() during handshake
      Bump API version, advertise get_cert_DER() and get_cert_details() functions
      Reduce priority of GnuTLS certificate verify failure message to PRG_INFO
      Fix GnuTLS request_passphrase() if no UI callback function
      openconnect_set_xmlsha1() takes a const char *
      Stop using OpenSSL UI for user interaction
      Add completely untested PIN callback for GnuTLS
      GnuTLS: Split logging of additional certs into a separate loop
      GnuTLS: Don't include root CA in the supporting evidence; only intermediates
      OpenSSL: Don't include root CA in the supporting evidence; only intermediates
      Fix FreeBSD compile
      Allow interface name to be specified on *BSD
      Fix FreeBSD tun handling with net.link.tun.devfs_cloning=0
      Update comment about gnutls_x509_privkey_import_pkcs8() password handling
      Move request_passphrase() to ssl.c
      Use request_passphrase() for OpenSSL PKCS#12
      Fix config_arg handling
      Fix config fetch
      Use request_passphrase() for OpenSSL PEM files
      Check for gnutls_pkcs12_simple_parse() in GnuTLS
      Split out OpenSSL_specific start_dtls_handshake() function
      Add DTLS support for GnuTLS
      Allow '--with-gnutls' in configure
      Add UI handling for OpenSSL TPM keys
      GnuTLS now uses gnutls_session_set_premaster()
      Fix GnuTLS PKCS#11 PIN request function
      Use p11-kit for directing PIN request to process_auth_form()
      Remove last traces of special UI and PIN handling from main.c
      Bump library soname to libopenconnect.so.2
      Kill old openconnect_vpninfo_new()
      Fix cbdata argument to process_auth_form()
      Change Requires: to Requires.private: in openconnect.pc
      Fix generation of version.c for out-of-tree builds
      Fix git-tree deps for version.c in out-of-tree build
      Don't hard-code cipher type in GnuTLS DTLS
      Set X-CSTP-Base-MTU: for new servers
      Make 'make dist' work for out-of-tree build
      Add gnutls_pkcs12 to dist
      Add gnutls.c and openssl.c to EXTRA_DIST too
      Add $CISCO_SPLIT_DNS environment variable for vpnc-script
      Update changelog
      Use X-DTLS-MTU response from server as well as X-CSTP-MTU
      Import updated gnutls_pkcs12_simple_parse() from GnuTLS
      Don't unregister p11-kit PIN callback until vpninfo is finished with
      Fix error handling when GnuTLS can't open key file
      Cope with SSL key being PKCS#11 but cert from file
      Use gnutls_certificate_set_x509_system_trust() where available
      GnuTLS: Fix expiry check and CA chain addition for PKCS#11 certs
      GnuTLS: Fix build with GnuTLS 2.12 and PKCS#11
      Set object-type on PKCS#11 URL for key and cert
      GnuTLS: Cache token PIN
      Remove obsolete GnuTLS FIXME comment
      Portability fixes for Solaris, *BSD
      Fix non-interactive mode
      Update docs for GnuTLS and PKCS#11 support
      GnuTLS: Print name of primary certificate
      OpenSSL: Print name of primary certificate
      Fix update-translations make target for out-of-tree build
      Fix upload-pot make target for out-of-tree build
      Update translations from Transifex
      Remove stray openssl includes
      Allow building against GnuTLS (for TCP) and GnuTLS (for DTLS) simultaneously
      Print SSL build options on --version or usage()
      Remove --cert-type option from command line
      Make --disable-ipv6 really do it
      Translate build option output
      Return error from OpenSSL load_certificate() for PKCS#11 URLs
      Add openconnect_has_pkcs11_support()
      Add --authenticate option
      Fix const char * warnings in GnuTLS pin_helper on FreeBSD
      Add openconnect_has_tss_blob_support()
      GnuTLS: Fix password memory leaks
      Fix useragent leak
      Make authentication valgrind-friendly
      OpenSSL: Fix password memory leaks
      OpenSSL: Clean up leaks in TPM ENGINE handling
      OpenSSL: Free BIO leak in reload_pem_cert()
      OpenSSL: Fix leak of cert_x509
      Explicitly check for gnutls_certificate_set_key(), separate it from p11-kit
      Fix DTLS fallback to OpenSSL for old GnuTLS
      Clean up build options printout
      Add TPM support for GnuTLS
      Remove redundancy in code which 'matches' cert to privkey
      Fix GnuTLS PIN cache leak when only *key* is PKCS#11 and not certificate.
      Implement certificate matching for TPM/PKCS#11 privkeys
      Fix error exits in GnuTLS load_certificate() function
      Try null SRK key (20 bytes of zero) first
      Give proper error reporting from tpm_sign_fn() TPM operations
      Handle TPM keys with their own authentication PIN
      Allow GUI to distinguish between PIN/passphrase callbacks
      Fix build with GnuTLS 2.12
      Update translations from Transifex
      Move dtls1_stop_timer() declaration inside the OPENCONNECT_OPENSSL section
      Link libopenconnect to trousers, not openconnect
      $CISCO_SPLIT_DNS is separated by commas in vpnc, not spaces
      Make 'make tag' work out of source tree
      Tag version 3.99

Mike Miller (2):
      Remove libopenconnect.map from EXTRA_DIST
      Show correct path to vpnc-script in the man page


-- 
dwmw2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 6171 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openconnect-devel/attachments/20120614/aeaec5c9/attachment.bin>


More information about the openconnect-devel mailing list