EAP/TTLS - Multiple Certificate chains
Alan DeKok
aland at deployingradius.com
Sat Apr 12 22:02:34 UTC 2025
On Apr 8, 2025, at 1:07 PM, adam <adamham at gmail.com> wrote:
> I have some queries I hope someone can help me with.
>
> 1) Pre-loading certificates:
>
> https://github.com/FreeRADIUS/freeradius-server/blob/release_3_2_7/raddb/certs/realms/README.md#preloading-certificate-chains
>
> I have set realm_dir in our eap module as suggested. As per:
>
>>> Once the realm_dir configuration has been added, the selection of
> certificates is identical to that described in the previous section. Just
> set TLS-Session-Cert-File, and the server will figure it out.
>
> … I have added the unlang statement suggested in
> https://github.com/FreeRADIUS/freeradius-server/blob/release_3_2_7/raddb/certs/realms/README.md#dynamic-loading-of-certificate-chains
That should be OK.
> Q: Is there a way to know if a certificate chain has been
> pre-loaded/cached? I can’t find reference in the debug output at startup or
> during the EAP/TTLS conversation. The file is definitely parsed by the
> server (if I remove the private key from the chain the server will complain
> if a corresponding key file is not present), but it would be useful for me
> to see if a cached file is being used or not.
There's no debug log which says that. I'll add one.
> Unless I have misunderstood the documentation, my realm_dir and the
> directory I have set in the unlang statement are the same. So certificate
> chains are pre-loaded from this directory on startup, and also added to
> that directory during runtime for dynamic loading.
Yes.
> Q: In the event that a certificate chain is pre-loaded/cached, and the file
> in the realms directory changed during runtime (e.g. certificate renewal)
> is it safe to assume the cached chain is used until a server restart?
Yes. The cached file isn't reloaded.
> 2) File format
>
> I have followed
> https://github.com/FreeRADIUS/freeradius-server/blob/release_3_2_7/raddb/certs/realms/README.md#format
> and
> also placed the private key at the top of each file.
You can also put the private key into a separate ".key" file.
> In the "preloading-certificate-chains" section it states:
>
>>> Each file in that directory should be a PEM encoded certificate chain,
> as described in the previous section. For safety, every file must have a
> .pem as the filename extension. e.g. example.org.pem. If there is a
> corresponding private key, it should be placed into a .key file. e.g.
> example.org.key.
>
> (emphasis on must)
>
> Accordingly each of my certificate chain files have a '.pem' extension and
> I have to change the unlang expression so the files are found on startup
> and at runtime e.g.
>
> "
> …
> TLS-Session-Cert-File := "${certdir}/realms/%{Realm}.pem"
> …
> "
>
> Q: is the ".pem" file suffix still necessary? I ask as I have tested with
> and without and both work the same. I also ask in case this bears relevance
> to my first question.
For files loaded via TLS-Session-Cert-File, the file doesn't have to end in ".key".
> Q: do I need to place my corresponding key in a separate file? I ask in
> case it has relevance to my first question. The server seems to work out if
> the private key is in the chain file or not, at startup.
The key doesn't have to be in a separate file.
If it works...
Alan DeKok.
More information about the Freeradius-Users
mailing list