Good day everyone and I hope you’re doing great!
I have been trying to set up a FreeIPA server and client, with access to the FreeIPA server via a smartcard (in this case a YubiKey 5C NFC) and was wondering if anyone was knowledgeable about some of the issues I have ran into.
Please see my setup below and a description of the issues I have encountered so far.
Setup
-
Two nodes, each running Rocky Linux 9.5 connected to each other on a LAN.
-
One node (Host A) is the FreeIPA server. This has an FQDN of
freeipa-server.example.local
. -
The other node (Host B) is the FreeIPA client. This has an FQDN of
freeipa-client.example.local
-
The YubiKey 5C NFC (with firmware
5.4.3
) is directly connected to Host B via USB. -
SELinux
is set toPermissive
mode on both hosts. Appropriate Firewall ports have been opened. -
No
root
certificates, intermediary certificates or any similar were created during the FreeIPA server setup process. -
This is just a local test setup, nothing production-related.
What Works
-
Generating a Certificate Signing Request on the Yubikey, logging into the FreeIPA server with my user account, importing the CSR there, downloading the certificate that is created and then importing that into my Yubikey.
-
Setting up the FreeIPA server with
ipa-server-install --setup-dns --auto-reverse
and the FreeIPA client withipa-client-install --enable-dns-updates --mkhomedir
works without issue. -
Requesting a
kerberos
ticket for theadmin
account withkinit admin
. -
Accessing the FreeIPA server via the client and logging in with the credentials generated through
ipa user-add howard --password --homedir=/home/howard --shell=/bin/bash
. -
Logging into the FreeIPA server via the FreeIPA client using the web UI is no problem.
What Does Not Work
-
At the
ROCKY IDENTITY MANAGEMENT
screen on the FreeIPA server, I clickLog In Using Certificate
. I then receive the error message ofAuthentication with personal certificate failed
. To reiterate, the Yubikey is connected to the FreeIPA client, which is then accessing the FreeIPA server. -
I check the
httpd
error log at/var/log/httpd/error_log
and observe the following:
[Mon Apr 14 17:53:10.796638 2025] [ssl:error] [pid 20256:tid 20299] [client 192.168.1.12:53646] AH02263: Re-negotiation handshake failed: Client certificate missing, referer: https://freeipa-server.example.local/ipa/ui/
-
From the output of my
/var/log/sssd/*
logs, I did not observe any errors there surrounding the above issue. -
From the output of
sssctl user-checks -s gdm-smartcard "howard" -a auth
on the FreeIPA Server, I can see the following, which is concerning to me (the full output is linked below):
auth=authinfo_unavail
pam_authenticate for user [howard]: Authentication service cannot retrieve authentication info
PAM Environment:
- no env -
- I had added the following to
/etc/sssd/sssd.conf
, then restartedsssd
withsystemctl restart sssd
and still saw no change:
[pam]
pam_cert_auth = True
-
I tried directly connecting my Yubikey to the FreeIPA server and logging in locally that way as well and also saw the same error messages of
Re-negotiation handshake failed: Client certificate missing
. -
One item in the main guide that I followed mentions running the following commands (also from Red Hat as well) and supplying the required certificates:
kinit admin
ipa-advise config-server-for-smart-card-auth > config-server-for-smart-card-auth.sh
chmod u+x config-server-for-smart-card-auth.sh
./config-server-for-smart-card-auth.sh ca.crt.pem
-
This I have tried, however you need to supply
rootca.pem subca.pem issuingca.pem
certificates, which I understand you can generate withopenssl
. -
In my local setup that I have here, is the generation of your own certificates, including a certificate authority also a requirement? Is that part of the reason I am seeing the
Re-negotiation handshake failed: Client certificate missing
errors that I listed above? -
I had
[ssl:error] [pid 15019:tid 15204] SSL Library Error: error:0A000117:SSL routines::extension not received
errors fromhttpd
previously, which I fixed in Firefox by going toabout:config
→ and settingsecurity.tls.enable_post_handshake_auth
totrue
.
Configs and Logs
Guides Consulted
Closing thoughts
If there are any troubleshooting steps that I can further try or an example FreeIPA setup that has Yubikey authentication working, please let me know and I’d be more than happy to try those out.
It is also not a problem at all for me to scrap the whole setup and start afresh, regarding how I have configured my Yubikey and the certificates.
If you need any further outputs from me, please let me know and I’d be more than happy to send you those.
Thanks ever so much for anyone that takes the time to reply here and this has been an issue I have been stuck on for a while now.