[Nut-upsuser] NSS on Debian Stretch with libnss3: Can not initialize SSL context

Roger Price roger at rogerprice.org
Tue Jul 10 15:25:22 BST 2018


I am unable to get 2.7.4 to work with NSS support as provided by libnss3 
2:3.26.2 on Debian stretch.

Currently NSS supports two database formats identified by prefixes "sql:" for 
the new database and "dbm:" for the legacy database.

I created the NSS database in directory /etc/nut with command

    certutil -N -d dbm:NSS_db --empty-password

I copied over public key and certificate from a working NUT+OpenSSL installation 
and checked them as follows:

List certificates:

   root at gold /etc/nut # certutil -L -d dbm:NSS_db
   Certificate Nickname       Trust Attributes
                              SSL,S/MIME,JAR/XPI
   gold                       Cu,u,u

Check certificates:

   root at gold /etc/nut → certutil -K -d dbm:NSS_db
   certutil: Checking token "NSS Certificate DB" in slot
             "NSS User Private Key and Certificate Services"
   < 0> rsa      df7b376946c8cfe59d74095dfc4b882d081b981b   gold

My upsd.conf is
   # upsd.conf
   LISTEN 0.0.0.0 3493
   CERTPATH /etc/nut/NSS_db
   CERTIDENT gold sekret

but when I run systemctl start nut-server I get the message

Jul 10 15:02:51 gold upsd[15961]: Connected to UPS [heartbeat]: dummy-ups-heartbeat
Jul 10 15:02:51 gold upsd[15961]: Connected to UPS [Eaton]: usbhid-ups-Eaton
Jul 10 15:02:51 gold upsd[15961]: listening on 0.0.0.0 port 3493
Jul 10 15:02:51 gold upsd[15962]: Startup successful
Jul 10 15:02:51 gold upsd[15962]: Can not initialize SSL context

The error message comes from netssl.c

 	if (certfile)
 		status = NSS_Init(certfile);
 	else
 		status = NSS_NoDB_Init(NULL);
 	if (status != SECSuccess) {
 		upslogx(LOG_ERR, "Can not initialize SSL context");
 		nss_error("upscli_init / NSS_[NoDB]_Init");
 		return;
 	}

Since certfile is defined, it looks as if legacy NSS_Init is unable to access 
the libnss3 NSS_db database.

Has anyone managed to get NSS support to work with libnss3?  How does one 
specify the dbm: or sql: format?

Roger
___________________________________________________________________

PS, for the brave, here is how I import private key and certificate:

Import private key:

   root at gold /etc/nut # openssl pkcs12 -export -inkey ./keys/gold.key \
                        -in ./keys/gold.crt -out ./keys/gold.p12 -name gold
   Enter Export Password: sekret
   Verifying - Enter Export Password: sekret

   root at gold /etc/nut # pk12util -i ./keys/gold.p12 -d dbm:NSS_db
   Enter password for PKCS12 file: sekret
   pk12util: PKCS12 IMPORT SUCCESSFUL

Import certificate:

   root at gold /etc/nut # openssl x509 -outform der \
                        -in ./keys/gold.pem -out ./keys/gold.der
   root at gold /etc/nut # certutil -A -d dbm:NSS_db -t "C,," \
                        -v 120 -n "gold" -i ./keys/gold.der



More information about the Nut-upsuser mailing list