奇怪的错误,而使用openssl

当我使用openSSL和一个configuration文件来签署一个中间证书时,我总是得到相同的错误。 错误是:

140736005481480:error:02001002:system library:fopen:No such file or directory:bss_file.c:175:fopen('/Volumes/Project - Encrypted/Security/root/ca/index.txt.attr','rb')

140736005481480:error:2006D080:BIO routines:BIO_new_file:no such file:bss_file.c:182:

140736005481480:error:0E078072:configuration file routines:DEF_LOAD:no such file:conf_def.c:195:

140736005481480:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_lib.c:324:group=CA_default name=email_in_dn

我明白关于该文件没有被发现的第一个错误,但我不明白的是为什么它所寻找的文件不是我在configuration中定义的文件。 这是我在configuration中:

database = $dir/index.txt # database index file.

我使用的命令是sudo openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -md sha256 -keyfile private/ca.key.pem -cert certs/ca.cert.pem -in intermediate/csr/intermediate.csr.pem -out intermediate/certs/intermediate.cert.pem

有谁明白是什么原因导致这些错误,以及如何解决?

openssl ca不只是使用数据库索引文件(你已经正确设置为index.txt ),而是一个数据库属性文件。 这总是和索引文件在同一个地方,它的名字是以.attr为后缀的索引。 这个属性文件(据我所知没有真正logging)只保存一个信息:configuration行

 unique_subject = yes/no 

那么你需要做什么? 在存储CA的文件夹中创build文件index.txt.attr (appearantely / Volumes / Project – Encrypted / Security / root / ca ),并添加上面提到的单行。