certutil: função com falha: biblioteca de segurança: banco de dados incorreto

10

quando estou usando certutil, retorna este erro:certutil: function failed: security library: bad database.

por exemplo, não consigo listar certificados ou chaves

Como posso consertar isso?

Zim3r
fonte

Respostas:

23

Se for um novo sistema, seu banco de dados de certificados pode não ser inicializado. Para corrigir isso, execute:

mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N
Maciej Małycha
fonte
2
Se você não quiser uma senha no banco de dados do certificado, adicione a --empty-passwordopção no final do certutilcomando.
Ben Johnson
Descobri que se eu executasse: certutil -d sql:$HOME/.pki/nssdb -Lnão resultaria nesse erro. Mas se eu apenas executasse certutil -L, mostraria esse erro. Isso significa que o banco de dados não está corrompido, mas há alguma incompatibilidade ou o certutil espera o diretório errado?
CMCDragonkai 15/01
3

Caso o banco de dados já tenha sido inicializado, mas ainda esteja corrompido, ele deverá ser reconstruído:

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

Verifique se está funcionando bem

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

Certificado de importação

$ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n GoAgent -i ~/programs/goagent/local/CA.crt
Mattijn
fonte
Desde a última atualização do libGNUTLS no Debian, meus navegadores (chrome e iceweasel) não foram abertos. No console eu tenho [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018e não há maneira de resolver isso normalmente. A reconstrução do banco de dados resolveu isso para mim! Muito obrigado :)
pid
Consegui reconstruir o banco de dados e listar os certificados depois disso, mas minha importação ainda está falhando com o erro: certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.Meu comando de importação é certutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtIsso não deve ser executado como root, não é?
Gillfish
2

Se você deseja exibir certificações de uma pasta específica (por exemplo, a pasta que armazena o cert8.dbarquivo para o Firefox), é necessário especificar a pasta com "-d":

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

Caso contrário, nss-certutiltente ler os arquivos * .db da ~/.netscapepasta ou talvez $HOME/.pki/nssdbcomo o usuário anterior mencionou.

user151182
fonte
1

Verifique também se o -dcaminho do diretório (deve apontar para o diretório) tem algum espaço ou não. Com o espaço, ocorre o mesmo erro ou erro de formato de arquivo incorreto - formato antigo do banco de dados, etc. Especialmente no Mac, a pasta está na "Application Support"qual contém espaço. Portanto, o caminho foi totalmente citado:

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

ou adicione o caractere \ escape.

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

E verifique se a pasta possui os seguintes arquivos, cert8.db, key3.db and secmob.db.

karim
fonte
0

No meu caso, resolvi o problema usando esta solução (Windows XP, nss 3.15.1):

cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .
Teemonek
fonte
2
Isso é ótimo, mas a pergunta especifica o CentOS.
MadHatter