@@ -301,6 +301,20 @@ int tls_context_alpn_set(void *ctx_backend, const char *alpn)
301301 return result ;
302302}
303303
304+ static int tls_context_set_verify_client (void * ctx_backend , int verify_client )
305+ {
306+ struct tls_context * ctx = ctx_backend ;
307+ int mode ;
308+
309+ if (ctx -> mode == FLB_TLS_SERVER_MODE && verify_client == FLB_TRUE ) {
310+ mode = SSL_CTX_get_verify_mode (ctx -> ctx );
311+ mode |= SSL_VERIFY_FAIL_IF_NO_PEER_CERT ;
312+ SSL_CTX_set_verify (ctx -> ctx , mode , NULL );
313+ }
314+
315+ return 0 ;
316+ }
317+
304318#ifdef _MSC_VER
305319/* Parse certstore_name prefix like
306320 *
@@ -801,7 +815,8 @@ static void *tls_context_create(int verify,
801815 SSL_CTX_set_verify (ssl_ctx , SSL_VERIFY_NONE , NULL );
802816 }
803817 else {
804- SSL_CTX_set_verify (ssl_ctx , SSL_VERIFY_PEER , NULL );
818+ int verify_flags = SSL_VERIFY_PEER ;
819+ SSL_CTX_set_verify (ssl_ctx , verify_flags , NULL );
805820 }
806821
807822 /* ca_path | ca_file */
@@ -1574,6 +1589,7 @@ static struct flb_tls_backend tls_openssl = {
15741589 .context_create = tls_context_create ,
15751590 .context_destroy = tls_context_destroy ,
15761591 .context_alpn_set = tls_context_alpn_set ,
1592+ .context_set_verify_client = tls_context_set_verify_client ,
15771593 .session_alpn_get = tls_session_alpn_get ,
15781594 .set_minmax_proto = tls_set_minmax_proto ,
15791595 .set_ciphers = tls_set_ciphers ,
0 commit comments