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

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

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

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

6 ответов

Решение

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

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

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

$ 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

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

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

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

Также проверьте -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.

Довольно старый вопрос, но упомянутые решения мне не помогли, поскольку ошибка была вызвана неправильным расширением оболочки.

В моем случае мне пришлось заменить~с$HOME, например

      certutil -d sql:~/.pki/nssdb -A -t "C,," -n KEY_NAME -i ~/path_to_the_key/key.cert

стал

      certutil -d sql:$HOMR/.pki/nssdb -A -t "C,," -n KEY_NAME -i $HOME/path_to_the_key/key.cert

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

cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .
Другие вопросы по тегам