Certificate certutil:函数失败:SEC_错误\u旧版\u数据库:证书/密钥数据库采用旧的、不受支持的格式
我用iceweasel(firefox)下载了一个已验证(非自签名)的S/MIME证书,该证书存储在cert8.db中 然后我用了:Certificate certutil:函数失败:SEC_错误\u旧版\u数据库:证书/密钥数据库采用旧的、不受支持的格式,certificate,smime,nss,certificate-store,certutil,Certificate,Smime,Nss,Certificate Store,Certutil,我用iceweasel(firefox)下载了一个已验证(非自签名)的S/MIME证书,该证书存储在cert8.db中 然后我用了: certutil -L -d <path_to_folder_that_cert8.db_resides> 我曾在3台不同的计算机上拼命尝试,包括一台具有相同内核和libnss3工具version的计算机(如我成功提取p12的初始桌面),这是: $ uname -a Linux commander 3.16.0-4-amd64 #1 SMP Deb
certutil -L -d <path_to_folder_that_cert8.db_resides>
我曾在3台不同的计算机上拼命尝试,包括一台具有相同内核和libnss3工具
version的计算机(如我成功提取p12的初始桌面),这是:
$ uname -a
Linux commander 3.16.0-4-amd64 #1 SMP Debian 3.16.7-2 (2014-11-06) x86_64 GNU/Linux
libnss3工具
version:2:3.17.2-1
有什么想法吗
谢谢为了成功运行certutil,我需要恢复整个.mozilla目录。文件cert8.db需要位于原始目录中。错误消息非常神秘。在使用
certutil-L
获取cert8.db
文件中的证书列表时,我遇到了类似的错误
现在我明白为什么命令不起作用了
–L
只能与文件夹中的cert8.db
一起使用。它还依赖于另外两个文件,key3.db和secmod.db
。
因此,在存在上述3个文件的文件夹中,-L
仅在那里起作用。
这就是为什么–d
参数采用文件夹路径的原因。不是cert8.db
文件
我尝试了certutil,将Firefox配置文件文件夹中的cert8.db
复制到临时目录中
当certuitl-A成功但-L失败,并且成功的-A命令在临时文件夹中创建了另外两个文件时,我注意到了这一点
还要检查目录路径是否有任何空间。使用空格时,会出现相同的错误或“错误文件格式错误-旧数据库格式”等。特别是在Mac OS中,该文件夹位于“应用程序支持”
文件夹中,该文件夹的名称中包含空格。因此,它需要完全引用路径:
"/Users/myuser/Library/Application Support/Firefox/Profiles/jii912uh.default"
或添加\转义字符
/Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default
多年来,该数据库已从平面文件迁移到Berkeley DB,并在3.12中迁移到现在的SQLite。在目录名前面加上
sql
,并用引号括起来以避开空格:
certutil -L -d sql:${HOME}/.pki/nssdb
作为参考,这里有一个。奇怪且令人困惑的是,如果您试图在一个您无权访问的位置查询证书数据库,并且您没有使用
sudo
请查看其余答案,以获得更合理的解释。谢谢。现在我知道-dbdir
formodutil
也应该是“secmod.db所在的目录”,而不是以文件名结尾的路径。这为我做到了,-d。
给出了主题错误,但-d sql:。
工作正常。安装chromium和libnss3工具后,'sql:${HOME}/.pki/nssdb'尚不存在。我必须首先通过'certutil-N-dsql:${HOME}/.pki/nssdb'初始化数据库。
/Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default
certutil -L -d sql:${HOME}/.pki/nssdb