]> git.ipfire.org Git - thirdparty/hostap.git/commit - wpa_supplicant/wpa_supplicant.conf
Add TLS client events, server probing, and srv cert matching
authorJouni Malinen <j@w1.fi>
Sat, 13 Feb 2010 09:14:23 +0000 (11:14 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 13 Feb 2010 09:14:23 +0000 (11:14 +0200)
commit00468b4650998144f794762206c695c962c54734
treed177ad63a50363525bf3717c2e4e950aa100d8be
parentc7d711609bb13786feb5dd87923bd24967dc29f8
Add TLS client events, server probing, and srv cert matching

This allows external programs (e.g., UI) to get more information
about server certificate chain used during TLS handshake. This can
be used both to automatically probe the authentication server to
figure out most likely network configuration and to get information
about reasons for failed authentications.

The follow new control interface events are used for this:
CTRL-EVENT-EAP-PEER-CERT
CTRL-EVENT-EAP-TLS-CERT-ERROR

In addition, there is now an option for matching the server certificate
instead of the full certificate chain for cases where a trusted CA is
not configured or even known. This can be used, e.g., by first probing
the network and learning the server certificate hash based on the new
events and then adding a network configuration with the server
certificate hash after user have accepted it. Future connections will
then be allowed as long as the same server certificate is used.

Authentication server probing can be done, e.g., with following
configuration options:
    eap=TTLS PEAP TLS
    identity=""
    ca_cert="probe://"

Example set of control events for this:
CTRL-EVENT-EAP-STARTED EAP authentication started
CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=21
CTRL-EVENT-EAP-METHOD EAP vendor 0 method 21 (TTLS) selected
CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=US/ST=California/L=San Francisco/CN=Server/emailAddress=server@kir.nu' hash=5a1bc1296205e6fdbe3979728efe3920798885c1c4590b5f90f43222d239ca6a
CTRL-EVENT-EAP-TLS-CERT-ERROR reason=8 depth=0 subject='/C=US/ST=California/L=San Francisco/CN=Server/emailAddress=server@kir.nu' err='Server certificate chain probe'
CTRL-EVENT-EAP-FAILURE EAP authentication failed

Server certificate matching is configured with ca_cert, e.g.:
    ca_cert="hash://server/sha256/5a1bc1296205e6fdbe3979728efe3920798885c1c4590b5f90f43222d239ca6a"

This functionality is currently available only with OpenSSL. Other
TLS libraries (including internal implementation) may be added in
the future.
src/common/wpa_ctrl.h
src/crypto/tls.h
src/crypto/tls_openssl.c
src/eap_peer/eap.c
src/eap_peer/eap_config.h
wpa_supplicant/Makefile
wpa_supplicant/wpa_supplicant.conf