ssh-agent pkcs11 uri to select certificate

Jakub Jelen jjelen at redhat.com
Tue Jan 25 02:39:47 AEDT 2022


On 1/14/22 17:02, petrus at gozmail.bzh wrote:
> Hello,
> 
> 
> I have two hardware tokens (Thales/Safenet eToken 5110cc) that both 
> contain certificates for various uses. They obviously use the same 
> driver, libeToken.so (version 10.7.77). I have no issues using one of 
> them either directly (with -I/PKCS11Provider) with ssh or ssh-agent.
> 
> However, I have to keep both tokens connected and I need to add only one 
> specific certificate to ssh-agent. For test purposes both tokens use the 
> same pin code, as with every try if the pin code is different, the one 
> for which it is incorrect will increment the tentative counter on the 
> token thus ending locking it. If the two pin codes are different the 
> selection will be based on available certificates with that pin, so that 
> kinda works until one of the two tokens is locked.
> 
>  From what I've read, p11-kit seems to be the piece of software that was 
> missing to glue various middlewares to 'consumer' software like ssh.
> 
> So, here are my two certificates:
> 
>      $ p11tool --list-all-certs
> pkcs11:model=ID%20Prime%20MD;manufacturer=Gemalto;serial=1234567890ABCDEF;token=foo 
> 
> pkcs11:model=ID%20Prime%20MD;manufacturer=Gemalto;serial=ABCDEF1234567890;token=bar 
> 
> 
>  From what I've read, this syntax should be correct:
> 
>      $ ssh-add -s /usr/lib/x86_64-linux-gnu/p11-kit-proxy.so 
> 'pkcs11:model=ID%20Prime%20MD;manufacturer=Gemalto;serial=1234567890ABCDEF;token=foo' 
> 
> 
> Or even
> 
>      $ ssh-add -s /usr/lib/x86_64-linux-gnu/p11-kit-proxy.so 
> pkcs11:serial=1234567890ABCDEF
> 
> (I'm using ssh-add through p11-kit-proxy.so for now as I've not been 
> able to directly use the pkcs11 uri - not sure if that matters).
> 
> But the pkcs11 uri does not seem to be used and all certificates end up 
> being added to ssh-agent:
> 
>      $ ssh-add -L
>      ssh-rsa AAAAB3<snip> foo
>      ssh-rsa AAAAC5<snip> bar
> 
> Is this because of the use of p11-kit-proxy, or something else I've 
> missed? If there is another method than p11-kit to achieve this I'm also 
> interested!

I implemented support for PKCS#11 URI and it is now in Fedora and RHEL8+ 
for couple of years. Unfortunately, it was not yet accepted and merged 
into the openssh:

https://bugzilla.mindrot.org/show_bug.cgi?id=2817

The patch is a bit outdated so not ready to be merged. The updated one 
is in Fedora if you want to try that out:

https://src.fedoraproject.org/rpms/openssh/blob/rawhide/f/openssh-8.0p1-pkcs11-uri.patch

Regards,
-- 
Jakub Jelen
Crypto Team, Security Engineering
Red Hat, Inc.



More information about the openssh-unix-dev mailing list