OpenSSL、基本配置、new_certs_dir、证书

OpenSSL、基本配置、new_certs_dir、证书

我在 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 或类似的东西签名的。实际上,如果适合您的话,这只是为了组织。

相关内容