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 .