hostapd/src/eap_peer
Jouni Malinen 3c108b7573 EAP peer: External server certificate chain validation
This adds support for optional functionality to validate server
certificate chain in TLS-based EAP methods in an external program.
wpa_supplicant control interface is used to indicate when such
validation is needed and what the result of the external validation is.

This external validation can extend or replace the internal validation.
When ca_cert or ca_path parameter is set, the internal validation is
used. If these parameters are omitted, only the external validation is
used. It needs to be understood that leaving those parameters out will
disable most of the validation steps done with the TLS library and that
configuration is not really recommend.

By default, the external validation is not used. It can be enabled by
addingtls_ext_cert_check=1 into the network profile phase1 parameter.
When enabled, external validation is required through the CTRL-REQ/RSP
mechanism similarly to other EAP authentication parameters through the
control interface.

The request to perform external validation is indicated by the following
event:
CTRL-REQ-EXT_CERT_CHECK-<id>:External server certificate validation needed for SSID <ssid>

Before that event, the server certificate chain is provided with the
CTRL-EVENT-EAP-PEER-CERT events that include the cert=<hexdump>
parameter. depth=# indicates which certificate is in question (0 for the
server certificate, 1 for its issues, and so on).

The result of the external validation is provided with the following
command:
CTRL-RSP-EXT_CERT_CHECK-<id>:<good|bad>

It should be noted that this is currently enabled only for OpenSSL (and
BoringSSL/LibreSSL). Due to the constraints in the library API, the
validation result from external processing cannot be reported cleanly
with TLS alert. In other words, if the external validation reject the
server certificate chain, the pending TLS handshake is terminated
without sending more messages to the server.

Signed-off-by: Jouni Malinen <j@w1.fi>
2015-12-12 18:24:27 +02:00
..
eap.c EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap.h Declare all read only data structures as const 2015-04-25 17:33:06 +03:00
eap_aka.c EAP-SIM/AKA: Explicitly check for header to include Reserved field 2015-05-03 16:33:03 +03:00
eap_config.h EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap_eke.c EAP-EKE peer: Fix memory leak on error path 2015-12-01 00:20:25 +02:00
eap_fast.c EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap_fast_pac.c EAP-FAST peer: Fix PAC parser error messages 2015-12-12 12:00:28 +02:00
eap_fast_pac.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
eap_gpsk.c EAP-GPSK: Pass EAP identifier instead of full request 2015-05-03 16:32:28 +03:00
eap_gtc.c Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
eap_i.h EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap_ikev2.c EAP-IKEv2 peer: Fix fragmentation reassembly 2014-12-21 00:48:24 +02:00
eap_leap.c EAP peer: Clear keying material on deinit 2014-07-02 12:38:48 +03:00
eap_md5.c EAP-MD5: Verify that CHAP operation succeeds 2012-08-16 18:49:02 +03:00
eap_methods.c Check os_snprintf() result more consistently - automatic 1 2014-12-08 11:42:07 +02:00
eap_methods.h HS 2.0R2: Add WFA server-only EAP-TLS peer method 2014-02-26 01:24:23 +02:00
eap_mschapv2.c Add build option to remove all internal RC4 uses 2015-08-02 16:52:56 +03:00
eap_otp.c Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
eap_pax.c EAP-PAX: Fix PAX_STD-1 and PAX_STD-3 payload length validation 2015-05-03 16:32:36 +03:00
eap_peap.c EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap_proxy.h eap_proxy: Add context data pointer to the get_imsi call 2013-10-23 20:51:46 +03:00
eap_proxy_dummy.c eap_proxy: Add context data pointer to the get_imsi call 2013-10-23 20:51:46 +03:00
eap_psk.c EAP peer: Clear keying material on deinit 2014-07-02 12:38:48 +03:00
eap_pwd.c EAP-pwd peer: Fix error path for unexpected Confirm message 2015-11-10 18:40:54 +02:00
eap_sake.c EAP-SAKE: Pass EAP identifier instead of full request 2015-05-03 16:32:46 +03:00
eap_sim.c EAP-SIM peer: Fix memory leak on reauth error path 2015-11-28 20:46:36 +02:00
eap_tls.c EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap_tls_common.c EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap_tls_common.h EAP-TLS/PEAP/TTLS/FAST: Move more towards using struct wpabuf 2015-05-03 16:32:23 +03:00
eap_tnc.c EAP-TNC: Limit maximum message buffer to 75000 bytes (CID 62873) 2014-06-13 16:03:45 +03:00
eap_ttls.c EAP peer: External server certificate chain validation 2015-12-12 18:24:27 +02:00
eap_vendor_test.c tests: Pending EAP peer processing with VENDOR-TEST 2015-01-28 13:09:31 +02:00
eap_wsc.c EAP-WSC peer: Reject connection on unexpected failure 2015-08-30 18:37:44 +03:00
ikev2.c EAP-IKEv2 peer: Avoid undefined behavior in pointer arithmetic 2015-10-24 21:43:54 +03:00
ikev2.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
Makefile tests: Add eapol-fuzzer 2015-04-22 11:44:19 +03:00
mschapv2.c EAP-MSCHAPv2: Use os_memcmp_const() for hash/password comparisons 2014-07-02 12:38:48 +03:00
mschapv2.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00
tncc.c TNC: Fix minor memory leak (CID 62848) 2014-06-12 19:44:58 +03:00
tncc.h Remove the GPL notification from files contributed by Jouni Malinen 2012-02-11 19:39:36 +02:00