我必须分析 OpenLDAP 配置,其中证书和密钥存储在 cert8.db 和 keys3.db 文件中。
我有一个关联的密码文件,它似乎用于加密/解密数据。还有一个 secmod.db 文件,其中包含以下内容:
Root Certs /usr/lib64/libnssckbi.so
Root Certs KdNSS Internal PKCS #11 Module
configdir='/etc/openldap/certs'
certPrefix=''
keyPrefix=''
secmod='secmod.db'
flags= updatedir=''
updateCertPrefix=''
updateKeyPrefix=''
updateid=''
updateTokenDescription='' ?=NSS Internal PKCS #11 Module
file
返回命令/etc/openldap/certs
:
cert8.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)
key3.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)
password: ASCII text
secmod.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)
但是,我找不到解密这两个文件中存储内容的方法。我尝试使用 pk12util,但列出包含的证书后返回:
pk12util -l cert8.db
Enter password for PKCS12 file:
pk12util: PKCS12 decoding failed: SEC_ERROR_BAD_DER: security library: improperly formatted DER-encoded message.
我如何从这些文件中检索数据?
编辑
我也来读这个帖子建议使用db_dump
:
db_dump -l cert8.db
db_dump: BDB0210 cert8.db: metadata page checksum error
db_dump: BDB5115 open: cert8.db: Invalid argument
非常感谢
答案1
使用(certutil
在nss-tools
RHEL/CentOS 上):
certutil -L -d /etc/openldap/certs
将为您提供证书列表。
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
OpenLDAP Server CTu,u,u
使用以下方式导出密钥
pk12util -o outfile.p12 -d /etc/openldap/certs -n "OpenLDAP Server"
这将要求输入导出的密码(在文件中password
)和导出密钥的密码。