FreeRadius Ceritificate Migration

John Dennis jdennis at redhat.com
Tue May 14 21:25:10 CEST 2013


On 05/14/2013 12:01 PM, Mitch Yackobeck wrote:
> Good morning John,
>
> I appologize for making myself look like a moron.   The original message
> had actually been sent to someone who was helping me to potentially work
> thru some issues that we were seeing and trying to work out.  I
> attempted to modify the message in haste and get some input from the
> group and it appears that I severely bungled that one up.  I've learned
> my lesson in humility as I actually went back and read what I had done
> and like yourself could not make true heads or tails of that first
> paragraph.
>
> The ultimate goal we are trying to achieve here is this; we are
> potentially going to be changing our certificate structure in our
> classroom networks. We are looking to have a way to have clients that
> have not been converted to the new certificate structure as well as
> those that have been converted able to authenticate simultaneously using
> the same wireless SSID and FreeRadius server.   We use Novell eDir for
> the backend services on the classroom side with FreeRadius
> authenticating our wireless users at the root of the tree.  For
> authentication purposes we have moved from passing the username and
> password via 802.1X on the Novell Client to an EAP-TLS user certificate
> installed in the computer certificate store so that the system is
> already authenticated to the network prior to a user attempting to login
> and remains connected even after login.
>
> What I was trying to convey is that I've spent some time over the last
> couple of weeks upgrading my test environment from an older version of
> FreeRadius to the latest available.   On that test server, I have both
> its test certificates and our production server certificates loaded up
> using a single file.  Using the certs specific to the test server,
> everything works as expected, when I attempt to use the certs from the
> production server, thats when things go a little pear shaped.  Initially
> it appears that the server is able to read the client certificate enough
> to recognize that the information is available, but when it requests
> further details, it fails to find the CA applicaple to the client cert
> and bombs out a reject.  See below for a capture of the client
> authentication attempt.
>
> I'm wondering if this type of setup is actually possible or if there is
> some switch that someone knows of somewhere in the config that perhaps I
> have missed.
>
> Any help would be appreciated.

Thank you Mitch, this is much more lucid.

I'll try to help as best I can but you're still making it difficult. We 
ask for the output of radiusd -X in plain text format for a reason (not 
edited snippets). Why? Well for starters it contains all sorts of 
essential information that you've deleted. At the very most basic level 
what FreeRADIUS version are you using? But it also tells us other 
things, such as how the server is configured, what files it's reading, etc.

But in any event what you want to accomplish should work. Let me give 
you some basic information and things to look at.

First of all I notice you're reading your configuration from 
/usr/local/etc/raddb, some people get confused because /etc/raddb is a 
common location and they edit the wrong files. Make sure you're editing 
the files the server is loading.

Also, make sure the location of the cert directory in the config is what 
you expect and is where you've installed your CA root certs (had the 
full debug been posting we could have verified this).

Cert verification may involve a chain of CA certs, each of which must 
validate, until a trusted root is reached. Every CA cert in the chain 
must be available, either because the client passes it or because you've 
installed it. Therefore it would be good to verify whether the client 
cert issuer is the only cert necessary or not and if not have you 
installed the intermediaries. But since you said you were able to 
manually verify the client cert via the openssl command line tool that's 
probably not the issue. But did you verify you've configured FreeRADIUS 
to use the same CA as the command line tool?

OpenSSL has two basic ways it can access multiple CA certs, you either 
concatenate them in a "bundle" file and set the CA_file to that, or you 
set the CA_path and OpenSSL will look for certs in the directory. Sounds 
like you decided to populate the CA_path with individual certs. Do they 
have file extensions? Did you set the CA_path variable correctly? (the 
debug log would have helped answer this).

It's a shame the cbtls_verify function in rlm_eap_tls.c does not print 
the certificate (via X509_print_ex()) when verification fails, being 
able to see the contents of the cert can be immensely helpful.

Looking at your error messages my best guess is that OpenSSL cannot 
locate one or more of the issuer certs, the most likely cause of this is 
misconfiguration of either the CA_file or CA_path variable, or the 
contents found at those locations. See the man page for 
SSL_CTX_load_verify_locations for details on what OpenSSL expects and 
confirm your FreeRADIUS config matches it (also verify in the debug 
output the server is loading what you expect it to load and not 
something else).


-- 
John Dennis <jdennis at redhat.com>

Looking to carve out IT costs?
www.redhat.com/carveoutcosts/


More information about the Freeradius-Users mailing list