Requesting guidance to understand all moving parts for RadSec + EAP-TLS

Dave Funk dbfunk at engineering.uiowa.edu
Sun Apr 20 18:24:47 UTC 2025


What do you mean by:
'use for as anchor for the radius server certificate defined in certificate_file'

The radius server certificate pointed to by certificate_file (EG the thing you 
got from "Let's Encrypt") does not need to contain a 'anchor CA' component.
The only thing it should contain is the actual server "leaf" cert and any 
intermediate certs leading up to but not including the issuing root ("anchor"?) 
CA certificate.
The clients that connect to your radius server should have their own local copy 
of trusted CA certs that they use to validate your server's TTLS cert when they 
connect to your server.

The ca_file (or ca_dir) should contain CA certs that were used to issue any 
client TLS certs that you want to trust, it does not need to contain anything 
else.

On Sun, 20 Apr 2025, Yoann Gini wrote:

> Following recommendations I’m starting by EAP-TLS config first. 
>
> I have two question. 
>
> First, it seams that, in my understanding, the configuration key ca_file in mods-enabled/eap (Ubuntu) is both use for as anchor for the radius server certificate defined in certificate_file and as trusted authority for client authentication.
>
> Is there a way to use a different set here? My goal would be to use for the radius server a certificate from Let’s Encrypt, as any exposed Internet service (and to ease the server provisioning), and for the client authentication, my internal PKI.
>
> Is that doable? Or should I use only certificates from my PKI here?
>
>
> Then, I’m having some basic EAP-TLS setup that ends with the server side sending an Access-Challenge and now answer from the client. Network stack is UniFi network with a macOS client connected to the WiFi.
>
> Any recommendations for the troubleshooting steps needed when Access-Challenge is not answered?
>
>
> Here is the debug log
>
>
>
> (0) Received Access-Request Id 0 from <my_public_ip>:55641 to 172.31.4.143:1812 length 224
> (0)   User-Name = "y"
> (0)   NAS-IP-Address = 172.16.128.187
> (0)   NAS-Identifier = "6ad79a4ae1df"
> (0)   Called-Station-Id = "6A-D7-9A-4A-E1-DF:Test"
> (0)   NAS-Port-Type = Wireless-802.11
> (0)   Service-Type = Framed-User
> (0)   Calling-Station-Id = "8A-6C-88-1D-26-16"
> (0)   Connect-Info = "CONNECT 0Mbps 802.11a"
> (0)   Acct-Session-Id = "E6820D4A4AE32164"
> (0)   Acct-Multi-Session-Id = "B340C339DFD7F4B8"
> (0)   Mobility-Domain-Id = 45825
> (0)   WLAN-Pairwise-Cipher = 1027076
> (0)   WLAN-Group-Cipher = 1027076
> (0)   WLAN-AKM-Suite = 1027075
> (0)   Filter-Id = "wpa-eap"
> (0)   Framed-MTU = 1002
> (0)   EAP-Message = 0x020100060179
> (0)   Message-Authenticator = 0x2dc1e95d3c1a904277374839acf24474
> (0) # Executing section authorize from file /etc/freeradius/3.0/sites-enabled/default
> (0)   authorize {
> (0)     [preprocess] = ok
> (0) auth_log: EXPAND /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d
> (0) auth_log:    --> /var/log/freeradius/radacct/<my_public_ip>/auth-detail-20250420
> (0) auth_log: /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d expands to /var/log/freeradius/radacct/<my_public_ip>/auth-detail-20250420
> (0) auth_log: EXPAND %t
> (0) auth_log:    --> Sun Apr 20 16:52:55 2025
> (0)     [auth_log] = ok
> (0) suffix: Checking for suffix after "@"
> (0) suffix: No '@' in User-Name = "y", looking up realm NULL
> (0) suffix: No such realm "NULL"
> (0)     [suffix] = noop
> (0) eap: Peer sent EAP Response (code 2) ID 1 length 6
> (0) eap: EAP-Identity reply, returning 'ok' so we can short-circuit the rest of authorize
> (0)     [eap] = ok
> (0)   } # authorize = ok
> (0) Found Auth-Type = eap
> (0) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
> (0)   authenticate {
> (0) eap: EXPAND %{Calling-Station-Id}
> (0) eap:    --> 8A-6C-88-1D-26-16
> (0) eap: Peer sent packet with method EAP Identity (1)
> (0) eap: Calling submodule eap_tls to process data
> (0) eap_tls: (TLS) TLS -Initiating new session
> (0) eap_tls: (TLS) TLS - Setting verify mode to require certificate from client
> (0) eap: Sending EAP Request (code 1) ID 2 length 10
> (0) eap: EAP session adding &reply:State = 0xbf9ac2b0bf98cffa
> (0)     [eap] = handled
> (0)   } # authenticate = handled
> (0) Using Post-Auth-Type Challenge
> (0) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
> (0)   Post-Auth-Type Challenge {
> (0)     policy remove_reply_message_if_eap {
> (0)       if (&reply:EAP-Message && &reply:Reply-Message) {
> (0)       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
> (0)       else {
> (0)         [noop] = noop
> (0)       } # else = noop
> (0)     } # policy remove_reply_message_if_eap = noop
> (0) attr_filter.access_challenge: EXPAND %{User-Name}
> (0) attr_filter.access_challenge:    --> y
> (0) attr_filter.access_challenge: Matched entry DEFAULT at line 12
> (0)     [attr_filter.access_challenge.post-auth] = updated
> (0)   } # Post-Auth-Type Challenge = updated
> (0) session-state: Saving cached attributes
> (0)   Framed-MTU = 1002
> (0) Sent Access-Challenge Id 0 from 172.31.4.143:1812 to <my_public_ip>:55641 length 68
> (0)   EAP-Message = 0x0102000a0da000000000
> (0)   Message-Authenticator = 0x00000000000000000000000000000000
> (0)   State = 0xbf9ac2b0bf98cffac710c0c9c10466bb
> (0) Finished request
> Waking up in 4.9 seconds.
>
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

-- 
Dave Funk                               University of Iowa
<dbfunk (at) engineering.uiowa.edu>     College of Engineering
319/335-5751   FAX: 319/384-0549        1256 Seamans Center, 103 S Capitol St.
Sys_admin/Postmaster/cell_admin         Iowa City, IA 52242-1527
#include <std_disclaimer.h>
Better is not better, 'standard' is better. B{


More information about the Freeradius-Users mailing list