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의 마지막 업데이트 이후 내 브라우저 (chrome 및 iceweasel)를 열지 못했습니다. 콘솔에서 나는 [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018이것을 우아하게 해결할 방법이 없었습니다. DB를 재구성하면 해결되었습니다! 대단히 감사합니다 :)
pid

DB를 다시 빌드하고 그 후에 인증서를 나열 할 수 있었지만 내 가져 오기는 여전히 오류로 실패합니다. 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루트로 실행할 필요가 없습니다.
길 피쉬

2

특정 폴더 (예 : cert8.dbFirefox 용 파일을 저장하는 폴더)의 인증을 표시 하려면 "-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"

또는 \ 이스케이프 문자를 추가하십시오.

 /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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.