trouble with pkinit
Geoffrey Thorpe
geoff at geoffthorpe.net
Fri Apr 17 18:05:20 EDT 2026
Hi all
I previously posted about my "HCP" interest in MIT kerberos (porting it
over from Heimdal) on the kerberos at mit.edu mail list;
https://mailman.mit.edu/pipermail/kerberos/2026-March/023321.html
I've made a little progress since then. Not much, but a little. I've
managed to teach it to build two variants of the base image, the
existing one (which is Heimdal-based) plus a new alternative, which has
MIT kerberos (and rra/kstart!) and none of the Heimdal stuff. And from
there, the first baby-step is try to get the "alicia" workload of the
test use-case to run on the MIT variant. (I.e. to leave all the
infrastructural elements, KDCs and what-not, running on the
Heimdal-based image, and just move one of the test clients over to MIT.)
The "alicia" workload uses kinit (with a pkinit client cert that is
provisioned by the HCP machinery) to get a TGT and then tries to use
that to connect to another workload over ssh (using GSS). When running
alicia on the MIT-based image, what I'm seeing is;
root at alicia:~# kinit -V \
-X X509_user_identity=FILE:/assets/pkinit-client-alicia.pem alicia
Using default cache: /tmp/krb5cc_0
Using principal: alicia at HCPHACKING.XYZ
PA Option X509_user_identity = FILE:/assets/pkinit-client-alicia.pem
kinit: Client 'alicia at HCPHACKING.XYZ' not found in Kerberos database
while getting initial credentials
Whereas if I start the alicia container using the Heimdal-based image,
it gets a TGT just fine;
root at alicia:~# kinit \
-C FILE:/assets/pkinit-client-alicia.pem alicia
root at alicia:~# klist
Credentials cache: FILE:/tmp/krb5cc_0
Principal: alicia at HCPHACKING.XYZ
Issued Expires Principal
Apr 17 21:42:32 2026 Apr 17 21:47:32 2026
krbtgt/HCPHACKING.XYZ at HCPHACKING.XYZ
Notes that might be relevant;
* I confirmed the MIT-based image has pkinit support built/installed
* These both use the same krb5.conf, with the same [realms] config;
* the 'kdc' attribute points to the correct KDC
* 'pkinit_anchors' points to the CA file (that signed the KDC cert)
* The (Heimdal-based) KDC is configured to use synthetic principals, so
indeed there is no "alicia" principal in the Kerberos database, the KDC
is configured to issue a TGT for whichever client principal is in the
client cert, whether or not that principal is in its database. This
doesn't pose a problem with the Heimdal kinit, so I don't know why it
would be an issue with the MIT one. (I.e. whether the principal is or
isn't in the database is a KDC-side consideration, so why is this error
message showing up on the client-side?)
* If I run the "kinit" command without the "-X" argument providing the
certificate, I see exactly the same error.
Any ideas? If there's a way to increase the debugging (or even
instrument the mit code directly), I'm happy to try out any suggestions.
BTW, the HCP build can generate the MIT-based image using either
standard debian packages or compiling and installing from source, and I
have tried both. If anyone wants me to patch the mit-krb5 source to try
out any ideas, I'm currently compiling and installing from the master
branch of the github.com/krb5/krb5 repo.
(Also BTW, I haven't yet pushed my MIT-supporting HCP changes, so if you
are courageous enough to want to try any of this yourself, please ping
me first.)
TIA
Cheers,
Geoff
More information about the krbdev
mailing list