PEAP correct client certificate
Alan DeKok
aland at deployingradius.com
Mon Nov 20 21:26:48 CET 2017
On Nov 20, 2017, at 3:16 PM, Brian Julin <BJulin at clarku.edu> wrote:
> As an aside/tangent to this, I'm wondering if I am reading the code right or missing
> something... every place that SSL_VERIFY_CLIENT is set,
> SSL_VERIFY_FAIL_IF_NO_PEER_CERT is also set. So as far as I can see,
> there is no way to make client certificates optional with PEAP.\
Those flags are set in the SSL* structure. i.e. the one setting up *this* connection.
The function creating the default SSL_CTX *does* set those flags. But the "create this SSL" function clears them, if there's no requirement for client certs.
I've tested PEAP using eapol_text with / without client certs. It works.
> Not that I expect MS or Google or Apple to suddenly come down with a case
> of sanity and start allowing this as an option, but it would seem to me that
> if you had a mixed environment of machines that can and cannot do client certs
> with PEAP (that is, some number of professionally configured wpa_supplicants)
> you might want to do something like this in post-auth:
>
> 1) Send any mschap-authed client that offered no certificate to a guest VLAN or some other restricted area.
> 2) Assuming you encoded the expected CSIDs and/or usernames in a cert attribute when you issued it, alert/quarantine on any mismatches.
> 3) Send any mschap-authed client with an expired certificate to a VLAN where SCEP/NAC/remediation servers are accessible.
If the client cert has expired, you don't really get MSCHAP auth. The connection usually just drops in the TLS layer.
> 4) Send mschap-authed clients with valid certificates onto various vlans based on username and/or csid and/or cert attributes.
>
> Well, anyway, a guy can dream.
>
> However as things currently stand you cannot get the TLS-Client-* attributes, even for clients
> that do offer a cert, without requiring a cert and thus kicking cert-less users off the SSID
> entirely.
No.. the client *doesn't* send a client certificate unless it's (a) been configured on the client, and (b) requested by the server.
> Am I reading the current situation right? If so I'll add that to my wishlist for one of my
> rare moods when I suddenly get an inspiration to do something productive for a change.
see tls_new_session() for details. It sets the verify mode.
> Or... am I missing a switcharoo trick where you can somehow check for cert presence and
> then run the validation outside the OpenSSL API?
That's actually allowed by OpenSSL. We don't really use it...
Alan DeKok.
More information about the Freeradius-Users
mailing list