certutil: функция завершилась ошибкой: библиотека безопасности: плохая база данных


10

когда я использую certutilэто возвращает эту ошибку:certutil: function failed: security library: bad database.

например, я не могу перечислить сертификаты или ключи

Как я могу это исправить?

Ответы:


23

Если это новая система, база данных сертификатов может быть не инициализирована. Чтобы это исправить, выполните:

mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N

2
Если вам не нужен пароль в базе данных сертификатов, добавьте --empty-passwordпереключатель в конец certutilкоманды.
Бен Джонсон

Я обнаружил, что если я бегу вместо этого: certutil -d sql:$HOME/.pki/nssdb -Lэто не приведет к этой ошибке. Но если я просто запустите, certutil -Lэто покажет эту ошибку. Означает ли это, что база данных не повреждена, но есть некоторая несовместимость или certutil ожидает неправильный каталог?
CMCDragonkai

3

Если база данных уже инициализирована, но все еще повреждена, ее необходимо перестроить:

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

Проверьте, хорошо ли работает

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

Импортный сертификат

$ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n GoAgent -i ~/programs/goagent/local/CA.crt

Со времени последнего обновления libGNUTLS в Debian мои браузеры (chrome и iceweasel) не открывались. На консоли я попал [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018и никак не мог решить это изящно. Восстановление БД решило это для меня! Спасибо большое :)
pid

После этого я смог перестроить БД и вывести список сертификатов, но мой импорт все еще не выполняется с ошибкой: certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.Моя команда импорта: certutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtЭто не должно запускаться от имени пользователя root, не так ли?
Gillfish

2

Если вы хотите отображать сертификаты из определенной папки (например, из папки, в которой хранится cert8.dbфайл для Firefox), вам необходимо указать папку с помощью «-d»:

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

В противном случае, nss-certutilможет попытаться прочитать файлы * .db из ~/.netscapeпапки, или, $HOME/.pki/nssdbкак упоминалось ранее.


1

Также проверьте -dпуть к каталогу (должен указывать на каталог), есть ли пробел или нет. С пробелом он выдает ту же ошибку или ошибку неверного формата файла - старый формат базы данных и т. Д. Особенно в Mac папка, в "Application Support"которой содержится место. Итак, путь полностью указан:

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

или добавьте символ \ escape.

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

И убедитесь, что в папке есть следующие файлы, cert8.db, key3.db and secmob.db.


0

В моем случае я решил проблему с помощью этого решения (Windows XP, NSS 3.15.1):

cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .

2
Это здорово, но вопрос касается CentOS.
MadHatter
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.