Re: Need help with PKINIT

sasikumar bodathula sasikumar.b at
Thu May 16 22:50:20 EDT 2013

  Adding more information to the previous e-mail thread.

In the conf file following information is stored.
pkinit_anchors = FILE:<path>/cacert.pem
  pkinit_identity = FILE:<path>/client.pem,<path>/clientkey.pem

When this was tested and same was captured in the wireshark it has AS_REQ messages not PA-PK-AS-REQ

Question once these path was set as value to the "krb5_get_init_creds_opt_set_pa" will this api pick the certificate from the mentioned path and communicate with the KDC?

Just for testing the client code can i mention KDC which in not reachable so i can see the clients  PA-PK-AS-REQ for testing is this the correct way? Before proceeding to the end-to-end certificate based authentication with KDC.

Best Regards,


From: "sasikumar bodathula" <sasikumar.b at>
Sent: Thu, 16 May 2013 16:53:11 
To: "kerberos at" <kerberos at>
Subject: Re: Need help with PKINIT

  In our case we use the api's to control the client action.

Setup :- 

   we maintain the conf files according to the realm names.

1. In normal scenario we call krb5_get_init_creds_opt_alloc and krb5_get_init_creds_opt_set_forwardable to set the kerberos flags

2. Similarly called 

  krb5_get_init_creds_opt_set_pa(k5->ctx, options, "X509_anchors", "FILE:<path>/cacert.pem" );

        krb5_get_init_creds_opt_set_pa(k5->ctx, options, "X509_user_identity", "FILE:<path>/client.pem,<path>/clientkey.pem");

        krb5_get_init_creds_opt_set_pa(k5->ctx, options, "flag_RSA_PROTOCOL", "yes");

The above data was stored in the conf file.

My question is what ever i am doing is the correct procedure? Please do guide me in this.

Best Regards,


From: Greg Hudson <');">ghudson at MIT.EDU>;

Sent: Thu, 09 May 2013 21:25:53 

To: sasikumar bodathula <sasikumar.b at>

Cc: "kerberos at" <');">kerberos at>;

Subject: Re: Need help with PKINIT

On 05/09/2013 07:18 AM, sasikumar bodathula wrote:

> I am planning to implement PKINIT in my kerberos client application. Read the tutorial for PKINIT options in MIT site and need to know what API's can be used to achieve PKINIT in client application. 

Normally, a client application doesn't need to use any APIs to make

PKINIT work; all you have to do is configure the client and KDC

appropriately using krb5.conf.

If you have a specific need to control PKINIT behavior from the

application, you can create a krb5_get_init_creds_opt object with

krb5_get_init_creds_opt_alloc and set PKINIT-specific attributes with

krb5_get_init_creds_opt_set_pa.  The attributes you can set this way are

described in the kinit man page under the description of the -X

attribute (so X509_user_identity, X509_anchors, and flag_RSA_PROTOCOL).

 You may also need to refer to the krb5.conf man page where it talks

about the pkinit_identities and pkinit_anchors variables.


Kerberos mailing list           Kerberos at

More information about the Kerberos mailing list