certutil: función fallida: biblioteca de seguridad: base de datos incorrecta

10

cuando lo estoy usando certutildevuelve este error:certutil: function failed: security library: bad database.

por ejemplo, no puedo enumerar certificados o claves

¿Cómo puedo arreglar esto?

Zim3r
fuente

Respuestas:

23

Si es un sistema nuevo, es posible que su base de datos de certificados no se inicialice. Para solucionar esto, realice:

mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N
Maciej Małycha
fuente
2
Si no desea una contraseña en la base de datos de certificados, agregue el --empty-passwordinterruptor al final del certutilcomando.
Ben Johnson
Descubrí que si ejecutaba en su lugar: certutil -d sql:$HOME/.pki/nssdb -Lno daría lugar a ese error. Pero si solo corro certutil -L, mostraría ese error. ¿Eso significa que la base de datos no está dañada, pero hay alguna incompatibilidad o certutil espera el directorio incorrecto?
CMCDragonkai
3

En caso de que la base de datos ya se haya inicializado, pero todavía esté dañada, debe reconstruirse:

$ mv ~/.pki/nssdb ~/.pki/nssdb.corrupted
$ mkdir ~/.pki/nssdb
$ chmod 700 ~/.pki/nssdb
$ certutil -d sql:$HOME/.pki/nssdb -N

Compruebe si funciona bien

$ certutil -d sql:$HOME/.pki/nssdb -L
Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Certificado de importación

$ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n GoAgent -i ~/programs/goagent/local/CA.crt
Mattijn
fuente
Desde la última actualización de libGNUTLS en Debian, mis navegadores (Chrome y Iceweasel) no se pudieron abrir. En la consola obtuve [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018y no hay forma de resolver esto con gracia. ¡Reconstruir el DB lo resolvió para mí! Muchas gracias :)
pid
Pude reconstruir la base de datos y enumerar los certificados después de eso, pero mi importación sigue fallando con el error: certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.mi comando de importación es certutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtEsto no debería ejecutarse como root, ¿verdad?
Gillfish
2

Si desea mostrar certificaciones de una carpeta específica (por ejemplo, la carpeta que almacena el cert8.dbarchivo para Firefox), debe especificar la carpeta con "-d":

nss-certutil -d /Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default -L

De lo contrario, nss-certutilpuede intentar leer archivos * .db de la ~/.netscapecarpeta, o tal vez $HOME/.pki/nssdbcomo mencionó el usuario anterior.

usuario151182
fuente
1

Compruebe también que la -druta del directorio (debe apuntar al directorio) tiene espacio o no. Con espacio, da el mismo error o error de formato de archivo incorrecto: formato de base de datos antiguo, etc. Especialmente en Mac, la carpeta "Application Support"contiene espacio. Entonces, tenga el camino completamente citado:

"/Users/myuser/Library/Application Support/Firefox/Profiles/jii912uh.default"

o agregue el carácter \ escape.

 /Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default

Y verifique que la carpeta tenga los siguientes archivos, cert8.db, key3.db and secmob.db.

karim
fuente
0

En mi caso, resolví el problema usando esta solución (Windows XP, nss 3.15.1):

cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .
Teemonek
fuente
2
Eso es genial, pero la pregunta especifica CentOS.
MadHatter