我在 openssl-config-file 中寻找差异的答案并使用这两个配置参数。
certs = ... # Where the issued certs are
和
new_certs_dir = ... # default place for new certs
在里面OpenSSL 的网络安全O'Reilly 书中也将这两个参数放在了 default-openssl-config-file 中,但certs
从未使用过,也从未描述过。通过我的测试openssl
,所有证书都存储在由 定义的文件夹中new_cers_dir
。
这两个参数有什么区别?该参数是否certs
在某处使用?
答案1
如文档所示
https://www.openssl.org/docs/man1.1.0/apps/ca.html
new_certs_dir 由 CA 用于输出新生成的证书。
certs 未在此处使用。然而,它在 demoCA 中被引用:“./demoCA/certs - 证书输出文件” Certs 也不用于证书链,如下所示:
https://www.openssl.org/docs/man1.1.0/apps/pkcs12.html或者https://www.openssl.org/docs/man1.1.0/apps/verify.html
请注意,/etc/ssl/certs 是已颁发证书的默认位置。但 certs 变量是 $dir/certs 所以它是 ./demoCA/certs 我想我们都同意它用于颁发特定于 CA 的证书。这是有道理的,因为 CA 可能正在签署链接到任何公共证书颁发机构尚未颁发的证书的证书。
但是这方面的文档在哪里呢?我相信它是配置文件的产物。它用于诸如证书之类的选项,它将 ca.pem 保存在证书中,因此证书 = $certs/ca.pem。
我隐约记得有过同样的问题,直到我意识到它稍后在配置文件中使用,但现在不是了。
编辑:事情变得更奇怪了。 ca.c 的当前版本在这里:https://github.com/openssl/openssl/blob/master/apps/ca.c不引用证书。但更旧的版本是这样的:https://github.com/openssl/openssl/blob/d02b48c63a58ea4367a0e905979f140b7d090f86/apps/ca.c 引用它但不对其执行任何操作。
答案2
我对此没有很好的参考,但我的猜测和我个人使用它的方式是将新签名的证书存储在目录中new_certs
,但将 CA 证书(不是密钥)和更高级别的 CA 证书保留在目录中certs
。
这是为了区分它们,因为它们不是由您的 openssl CA 签名的,而是由某些外部 CA 或类似的东西签名的。实际上,如果适合您的话,这只是为了组织。