首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么签名证书需要`-CAcreateserial`参数?

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

Stack Overflow用户
提问于 2021-02-25 03:16:33
回答 2查看 5.4K关注 0票数 4

例如,

代码语言:javascript
运行
复制
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

参数不存在,并输出错误:

代码语言:javascript
运行
复制
/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:

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

代码语言:javascript
运行
复制
openssl x509 \
    -in "c.crt" \
    -noout \
    -serial

那有什么意义呢?如果需要,它为什么不在内部创建文件,而是将其保存在存储上?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-25 03:54:54

The -serial选项仅输出现有证书的序列号。但是,当您对证书进行签名时,CA需要为每个证书生成一个唯一的序列号,在此之前,没有-serial输出。

由于每个证书的序列号对于每个颁发者来说都需要是唯一的,所以颁发者需要跟踪它以前使用过的序列号,以确保它不会重用任何序列号。OpenSSL为您提供了一种使用序列号文件跟踪此情况的简单方法。当您指定-CAcreateserial,它将分配序列号

01添加到签名证书,然后使用下一个序列号创建此序列号文件(02)。在以后的签名操作中,您应该使用-CAserial使用该文件的名称,而不是-CAcreateserial,OpenSSL将为每个签名的证书递增该文件中的值。通过这种方式,您可以使用一个颁发者证书对一组证书进行签名,并且它们的所有序列号都将是唯一的。

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

请注意,虽然这种方法可以工作,但它不适合生产使用,因为有使用严格按顺序递增的证书序列numbers的一些问题

..。

票数 8
EN

Stack Overflow用户

发布于 2021-02-25 09:06:36

感谢@Crowman的答案是,我创建了一些script这可能说明了这个问题。

可能的脚本结果:

代码语言:javascript
运行
复制
--------------------------------------------------------------------------------
 |         A new {serial #1} generated | 310BD94F916BDF47913249966B85A9F7771D746A |
 |         A new {serial #2} generated | 0AC91627E4E99612D3CC7D99BB9793445CEDB36B |
 |   Used the same {serial #2} 5 times | 0AC91627E4E99612D3CC7D99BB9793445CEDB370 |
 | Used the same {serial #2} 256 times | 0AC91627E4E99612D3CC7D99BB9793445CEDB470 |
  --------------------------------------------------------------------------------
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66357451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档