带有客户端TLS的GNU libmicrohttpd允许空证书

时间:2019-08-13 14:38:36

标签: c++ c ssl httpserver client-certificates

我正在使用GNU libmicrohttpd建立HTTPS服务器。我的要求是服务器和客户端都在TLS握手期间进行身份验证,但是我观察到的是,即使客户端发送空证书,连接也被接受。

在wireshark中,我看到服务器请求证书,而客户端发送的证书的长度为len0。如何使microhttpd不接受这种情况-必须始终使用提供的CA pem验证证书?

if(!(server_handle = MHD_start_daemon(flags, port, NULL, NULL, 
    &mhttpd_layer::access_handler_callback, callback_data,
                    // now, continue with the options
                    MHD_OPTION_NOTIFY_COMPLETED, &mhttpd_layer::request_completed_callback, l_callback_data,
                    MHD_OPTION_SOCK_ADDR, (sockaddr*) &(it->addr),
                    MHD_OPTION_CONNECTION_TIMEOUT, it->conn_timeout,
                    MHD_OPTION_CONNECTION_LIMIT, it->conn_limit,
                    MHD_OPTION_PER_IP_CONNECTION_LIMIT, it->per_ip_conn_limit,
                    // HTTPS certificate options
                    MHD_OPTION_HTTPS_MEM_KEY, it->https_key_buff.data(),
                    MHD_OPTION_HTTPS_MEM_CERT, it->https_cert_buff.data(),
                    MHD_OPTION_HTTPS_MEM_TRUST, it->https_turst_ca_buff.data(),
                    MHD_OPTION_END)))

也许我应该按照他们的教程(https://www.gnu.org/software/libmicrohttpd/tutorial.html#Adding-a-layer-of-security)所述,手动在访问回调中检索证书?在这种情况下,为什么我要提供CA-对我来说这似乎不是正确的方法?

0 个答案:

没有答案