Added flag to allow expired certificates.
authorJoachim Bauch <bauch@struktur.de>
Fri, 11 Nov 2016 11:19:53 +0000 (12:19 +0100)
committerAndy Green <andy@warmcat.com>
Fri, 16 Dec 2016 14:08:13 +0000 (22:08 +0800)
lib/libwebsockets.h
lib/ssl-client.c

index a65486d..2de732e 100644 (file)
@@ -1983,7 +1983,8 @@ struct lws_http_mount {
 enum lws_client_connect_ssl_connection_flags {
        LCCSCF_USE_SSL                          = (1 << 0),
        LCCSCF_ALLOW_SELFSIGNED                 = (1 << 1),
-       LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK  = (1 << 2)
+       LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK  = (1 << 2),
+       LCCSCF_ALLOW_EXPIRED                    = (1 << 3)
 };
 
 /** struct lws_client_connect_info - parameters to connect with when using
index dff7fe2..679a738 100644 (file)
@@ -296,6 +296,10 @@ lws_ssl_client_connect2(struct lws *wsi)
                     n == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN) &&
                     wsi->use_ssl & LCCSCF_ALLOW_SELFSIGNED) {
                        lwsl_notice("accepting self-signed certificate\n");
+               } else if ((n == X509_V_ERR_CERT_NOT_YET_VALID ||
+                           n == X509_V_ERR_CERT_HAS_EXPIRED) &&
+                    wsi->use_ssl & LCCSCF_ALLOW_EXPIRED) {
+                       lwsl_notice("accepting expired certificate\n");
                } else {
                        lwsl_err("server's cert didn't look good, X509_V_ERR = %d: %s\n",
                                 n, ERR_error_string(n, sb));