Freeradius, ACME, Built-in Cert Manager - workarounds with intermediate certificate
Recently I was facing an issue with Freeradius using the built-in cert manager which certificates are manage by the ACME package.
The error was quite non understandable in debug mode:
eap_peap: ERROR: Failed in __FUNCTION__ (SSL_read): error:14094419:SSL routines:ssl3_read_bytes:tlsv1 alert access denied
For your information, I'm using freeradius for WP2 Enterprise Authentication over NAS.
With phones everything is fine (Android or iOS).
But that error occurred with Windows OS and sometimes with MacOS.
After few hours of troubleshooting, re-reading freeradius documentations (TLS Certificate part), it appears the client machine requires in addition the intermediate certificate one for the authentication when we are using a Let's Encrypt certificate.
The problem is the ACME store only the normal generated/renewed certificate (including the CA one) but not the fullchain one.
My workarounds are :
- Copy/paste the full chain certificate into the cert manager and reconfigure freeradius to use it
- Or, automating at renewal with the following command:
cp /tmp/acme/yourdomain/yourdomain/fullchain.cer /usr/local/etc/raddb/certs/server_cert.pem
So, my questions are
- What would be the best way to apply that?
- Enhancing the ACME package to detect the usage in freeradius and performing the copy operation?
- Adding a way into the ACME package that add also the fullchain certificate into the built-in cert manager at renewal?
Thank you in advance.
I have found that symlinking /usr/local/etc/raddb/certs/server_cert.pem to /conf/acme/[name of acme cert].fullchain and /usr/local/etc/raddb/certs/server_key.pem to /conf/acme/[name of acme cert].key works for me
Redmine issue: https://redmine.pfsense.org/issues/10908
Fixed in FreeRADIUS 0.15.7_18, please check
@viktor_g I will update it as soon as possible.