How to check the Extended Key Usage in freeradius?
Alan DeKok
aland at deployingradius.com
Mon Feb 13 12:14:31 UTC 2023
On Feb 13, 2023, at 5:08 AM, Dentzer, Daniel <Dentzer at cpa.de> wrote:
>
> I'm configuring a freeradius server for authenticating Wifi clients with EAP-TLS.
> The solution should check certificates with EAP-TLS and everything is working fine, but checking the "extended key usage" to reply with a specific VLAN is not working as expected.
The debug output prints out everything it's doing. Read it carefully.
> So in my site config I have:
Configuration doesn't matter.
> In the log I see that the Attribute is in the tls-cert:
> freeradius | (342) eap_tls: TLS-Client-Cert-Subject-Alt-Name-Dns := "user.XY.xxxxx.de"
> freeradius | (342) eap_tls: TLS-Client-Cert-X509v3-Extended-Key-Usage += "TLS Web Client Authentication, 1.3.6.1.4.1.311.21.8.16510850.12376249.15288979.13711710.10124257.18.15210945.7"
> freeradius | (342) eap_tls: TLS-Client-Cert-X509v3-Extended-Key-Usage-OID += "1.3.6.1.5.5.7.3.2"
> freeradius | (342) eap_tls: TLS-Client-Cert-X509v3-Extended-Key-Usage-OID += "1.3.6.1.4.1.311.21.8.16510850.12376249.15288979.13711710.10124257.18.15210945.2"
Packet 342.
> But when I scroll down, I see that the result of the if-check is false:
> ...
> freeradius | (343) if (TLS-Client-Cert-X509v3-Extended-Key-Usage-OID == "1.3.6.1.4.1.311.21.8.16510850.12376249.15288979.13711710.10124257.18.15380538.1") {
> freeradius | (343) if (TLS-Client-Cert-X509v3-Extended-Key-Usage-OID == "1.3.6.1.4.1.311.21.8.16510850.12376249.15288979.13711710.10124257.18.15380538.1") -> FALSE
Packet 343.
These are different packets, with different contents.
The server saves the TLS certificate data in the session-state list. So do:
if (&session-state.TLS-Client-Cert-X509v3-Extended-Key-Usage-OID == ...
That should work.
See also raddb/policy.d/debug. You can use the policies there to print out the contents of the various lists. i.e.
debug_session_state
if (&session-state.TLS-Client-Cert-X509v3-Extended-Key-Usage-OID == ...
That tells you exactly what's in the list, and whether or not the "if" condition will pass.
Alan DeKok.
More information about the Freeradius-Users
mailing list