Questions about EAP-TLS

Alan DeKok aland at
Thu Oct 8 21:10:57 CEST 2020

> On Oct 8, 2020, at 12:52 PM, mramadany <mramadany1 at> wrote:
> Hello everyone, I've recently set-up EAP-TLS on my home access point using freeradius, it works perfectly fine and everything went smoothly. However, I have some questions regarding the protocol and I hope someone on this list will clear things up for me:

  Most of these questions are about the EAP-TLS protocol, and not FreeRADIUS.  The short answer is that the protocol is described in the RFCs.  You may need to read many in order to fully understand things.

  The longer answer is that unless you're creating a new standard, it doesn't really matter how EAP-TLS works.  The spec describes it, multiple systems implement it.  The protocol lets you get online safely and securely.

  If you want to know "what happens when something goes wrong", or "what happens if...", then it's all answered in the RFCs.

> 1- Before the supplicant sends any certificates to the server, it usually verifies the server's identity.
> After it does, how can it ensure that it's still talking to the correct server for further communication, does it establish a tunnel after verifying the server's identity?

  For EAP-TLS, no.  Note that RFC 5216 does not mention establishing a tunnel.

> 2- If the above case is correct and it does establish a tunnel, what if the supplicant doesn't verify the server's identity. Does it establish a tunnel using whatever certificate that the server presents? Does it not establish a tunnel at all and simply sends further messages using plaintext?
> In Android for example, if you choose to not verify the server's identity, it warns: "No certificate specified. Your connection will not be private". What does it mean here? Does it mean that it's potentially not private because an attacker might impersonate the server because it'll accept whatever cert the server provides? If that's the case, then why does authentication with this method generate way fewer lines in `radiusd -X`?

  It means that the certificate chain hasn't been verified.  See the TLS specs for what this means.

  There are many, many, resources available which describe TLS.

> RFC 5216 Section 2.1.4 says that privacy (protecting client certificate information and stuff like that) is optional, yet Section 5.5 says that there's integrity protection in the protocol. How does that work if the privacy mode is optional? Does the supplicant sign the information somehow without encrypting it?

  Privacy is not encryption.  See RFC 7542 for more discussion on this topic.

> 3- Since the privacy mode is optional, does freeradius enable it by default? If not, how do I enable it?

  You don't enable it.  "privacy mode" is not part of the spec.  RFC 5216 Section 2.1.4 (which you say you've read) has a long discussion on privacy.  Which answers your questions about it.

> 4- After the client has been authorized, what happens exactly? How is the shared symmetric key derived?

  Read RFC 5216.  The spec explains exactly how this works.

> How is it passed along to the Access Point/Client so that it can receive/send data from/to the supplicant (since the RADIUS server's part ends after doing the authentication)?

  See RFC 3579.

  If you want to learn about the specs, the best way is by reading the standards.  This list is about FreeRADIUS, so further discussion of how EAP-TLS works is off topic.

  Alan DeKok.

More information about the Freeradius-Users mailing list