为什么签署证书需要`-CAcreateserial`参数?

F8ER

例如,

openssl x509 \
    -req -sha256 \
    -days "365" \
    -CAcreateserial \
    -CA "ca.crt" -CAkey "ca.key" -passin "pass:abcd" \
    -in "csr.csr" -extfile "ext.ext" \
    -out "c.crt"`

它还会创建一个文件ca.srl,其中包含签名证书的序列号。

如果-CAcreateserial不存在参数并输出错误,则以上操作将无效

/test/ca.srl: No such file or directory
140413509251520:error:06067099:digital envelope routines:EVP_PKEY_copy_parameters:different parameters:../crypto/evp/p_lib.c:93:
140413509251520:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:72:fopen('/test/ca.srl','r')
140413509251520:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:79:

这个参数不是用来输出带有序列的文件吗?无论如何,该序列可以通过下面的命令来获取?

openssl x509 \
    -in "c.crt" \
    -noout \
    -serial

那有什么意义呢?为什么不根据需要在内部创建文件,而是将其保存在存储器中?

乌鸦人

-serial第二个命令选项仅输出现有证书的序列号。但是,当您签署证书时,CA需要为每个证书生成唯一的序列号,直到这样做为止,尚无-serial要输出的序列号

由于每个证书的序列号对于每个颁发者都必须是唯一的,因此颁发者需要跟踪以前使用过的序列号,以确保它不会重复使用。OpenSSL为您提供了一种使用序列号文件跟踪此问题的简单方法。指定时-CAcreateserial,它将序列号分配01给已签名的证书,然后使用其中的下一个序列号(02创建此序列号文件在以后的签名操作中,应使用-CAserial该文件的名称,而不是-CAcreateserial,OpenSSL将为每个签名的证书递增该文件中的值。这样,您可以使用一个颁发者证书对一堆证书进行签名,并且所有证书的序列号都是唯一的。

如果您使用多个颁发者证书,则可以为每个证书使用单独的序列号文件。

请注意,虽然此方法有效,但不适用于生产用途,因为使用严格按顺序增加的证书序列号存在一些问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章