Check the subject and issuer in the EAP-TLS
Phil Mayers
p.mayers at imperial.ac.uk
Fri May 12 17:22:08 CEST 2006
Michal Prochazka wrote:
>
> I'm open for every remark and enhancement of this patch.
Have you considered instead having the eap-tls module add a
server-private config attribute e.g.
EAP-TLS-Client-Cert-Subject
EAP-TLS-Client-Cert-Issuer
...which would be a bit more general. If you wanted to run an external
script then, you could do something like:
authorize {
preprocess
eap
files
}
and in /etc/raddb/users:
DEFAULT EAP-TLS-Client-Cert-Subject *= ANY
Exec-Program = "somescript"
...the script will then receive the attribute as an environment variable
The major difficulty I can see with that is the cert isn't available
until a few packets into the EAP exchange - that is, the first few
packets won't have gone far enough into the TLS setup to have obtained
the cert. Also, the EAP module doesn't actually *process* any data until
the "authenticate" section, so if you had:
Access-Request EAP-TLS client hello
series of
Access-Challenge EAP-TLS fragmented(server hello, server cert)
Access-Request EAP-TLS send more
series of
Access-Request EAP-TLS fragmented(client cert, handshake)
Access-Challenge EAP-TLS send more
Access-Challenge EAP-TLS change cipher
Access-Request EAP-TLS zero data
Access-Accept
...only that last Access-Challenge would have a meaningful client cert
CN/issuer and could thus be matched on. I don't know enough about TLS
and EAP-TLS to be sure if we can guarantee there'll always be one packet
which that attribute can match on.
I suppose another option would be to have EAP-TLS to generate a "fake"
inner request which is passed through the radius server much like PEAPs
inner requests are, with User-Name as the CN and another attribute for
Issuer. That would remove the ambiguity and provide a very flexible way
for the server to do policy checks on all manner of cert attributes.
More information about the Freeradius-Users
mailing list