Skip to content

implement crl-persist logic

Antonio Quartulli openvpn-devel 1 version In review

Get series with b4
b4 am [email protected]...

Versions newest first

  1. v1 Latest3 patches 3 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3openvpn: implement crl-persist logicsrc/openvpn/init.c src/openvpn/openvpn.h src/openvpn/options.c +3 more+89 -40 replies
2/3mbedtls: implement crl-persist related functionssrc/openvpn/ssl_verify_mbedtls.c+83 -190 replies
3/3openssl: implement crl-persist related functionssrc/openvpn/ssl_verify_openssl.c+183 -02 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [Openvpn-devel] [PATCH 0/3] implement crl-persist logic

Hello OpenVPN community,

this is my first contribution (attempt) to the OpenVPN project. Please be gentle ;)

With this small patchset I am introducing a simple logic that reduces the overall client connection time when the CRL file is quite big.

Basically it consists in pre-loading the CRL file and storing it in the OpenVPN context, so that it can be later re-used for faster lookups.

The connection delay in my tests has dropped significantly (I am using a 143MB large CRL file having around 5 million entries).
Basically the delay (about 5 seconds on average) is moved from "every" client connection event to the instance bootup (or file reload).

This new behaviour can be enabled by specifying "--crl-persist" after the "--crl-file" option.

As of now, the CRL is updated only upon SIGHUP. Later this could be improved by hooking the update to another signal (i.e. SIGUSR2), or when stat() would detect a file update or even hook into inotify.

Patch 1 introduces the general logic in the openvpn code, like the new config option and the hooks to the crypto modules.

Patch 2 implements the related functions in the mbedTLS module.

Patch 3 implements the related functions in the OpenSSL module.

(Please check the specific patch commit messages for more details).

Please, have a look at my style and the way I used the various data structures. Being this my first time into the OpenVPN code base, I may have misused some objects like "c1" and similar..

Comments are welcome!

Cheers,

Antonio Quartulli (3):
openvpn: implement crl-persist logic
mbedtls: implement crl-persist related functions
openssl: implement crl-persist related functions

 src/openvpn/init.c               |   7 ++
 src/openvpn/openvpn.h            |   6 ++
 src/openvpn/options.c            |  21 +++++
 src/openvpn/ssl_common.h         |  23 ++++-
 src/openvpn/ssl_verify.c         |   5 ++
 src/openvpn/ssl_verify_backend.h |  31 +++++++
 src/openvpn/ssl_verify_mbedtls.c | 102 ++++++++++++++++++----
 src/openvpn/ssl_verify_openssl.c | 183 +++++++++++++++++++++++++++++++++++++++
 8 files changed, 355 insertions(+), 23 deletions(-)
Signature · 1 line
2.10.1