On Monday, July 28, 2014 11:56:46 David Shaw wrote:
> On Jul 28, 2014, at 10:24 AM, Kamil Dudka <kdu...@redhat.com> wrote:
> > On Thursday, July 24, 2014 17:18:25 David Shaw wrote:
> >> Hello,
> >> 
> >> A good while back I had some code that needed to use the NSS CAs only
> >> (and
> >> not the PEM ca-bundle file).  I did this by symlinking libnssckbi.so into
> >> my nssdb (so NSS would have the CA certs),
> > 
> > I am not sure how this is supposed to work.  Is it documented anywhere?
> 
> It's mentioned here: http://curl.haxx.se/docs/sslcerts.html

Thanks for the pointer!  I was not aware of that.  This probably stopped 
working because of the following change (which helps to prevent collisions
on NSS initialization/shutdown with other libraries):

https://github.com/bagder/curl/commit/20cb12db

NSS_InitContext() internally calls nss_Init() with the noRootInit flag set, 
which is intentional I am afraid.

I would propose to just remove the outdated statement from the documentation.

> Certainly a "certutil -d /etc/pki/nssdb -L -h all" does show all the CAs
> with the symlink in place, and shows nothing without the symlink in place.
> 
> I also tried "modutil -dbdir /etc/pki/nssdb -add ca_certs -libfile
> /usr/lib64/libnssckbi.so", which had the same result (certutil shows all
> the CAs, and removing that module makes certutil show nothing), but it
> similarly didn't work when done through curl.
> 
> Is there an alternate way to give NSS a set of CAs without importing each
> one specifically?
> 
> David

You can reintroduce the old behavior by initializing NSS in your application:

    NSS_Initialize("sql:/etc/pki/nssdb", "", "", "", NSS_INIT_READONLY);

        // insert the code of your example here...

    NSS_Shutdown();

Kamil
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to