openssl忽略序列号扩展
你好! 我创建了一个证书请求,结果如下:openssl忽略序列号扩展,openssl,x509,Openssl,X509,你好! 我创建了一个证书请求,结果如下: -----BEGIN CERTIFICATE REQUEST----- MIICszCCAZsCAQAwKzEKMAgGA1UEChMBczEQMA4GA1UECxMHb3JnVW5pdDELMAkG A1UEAxMCY24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4p/WHGkLZ DGuUenb8e+FtwimfPQvAGJU4IwVKgjjk3cqqdED2PgyeSKQEehyWdnEaGaKdDQ7
-----BEGIN CERTIFICATE REQUEST-----
MIICszCCAZsCAQAwKzEKMAgGA1UEChMBczEQMA4GA1UECxMHb3JnVW5pdDELMAkG
A1UEAxMCY24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4p/WHGkLZ
DGuUenb8e+FtwimfPQvAGJU4IwVKgjjk3cqqdED2PgyeSKQEehyWdnEaGaKdDQ72
unsPfOeRYAbzhEeKNM0qH/jx5gC5CO0/lq58UQOtBg4GXMLCMel+QIofBb1UGbLo
KviHLR02jfqYrUf72GY83JrhUGlzAJEl6upDvuZalp5qXql9ge8ylfGx/iOUYPk7
/gvfTOLDQmDKcUQ9nW8H9U+cl82lcsBMv7V4XCoG16GfEIziLyFHtLwvAwvGE2md
IEnoMwhY0cUxp/c8bzL0hvNvMDy1lNBJ14wohdTh95/Guf46d8DtWc7e1Nrb+biT
HxWsftA4WEQdAgMBAAGgQzBBBgkqhkiG9w0BCQ4xNDAyMDAGA1UEBQQpVURJRDow
MDAwMDAwMC03YTBlLTkyNTUtZmZmZi1mZmZmYmY4ZmYyZDUwDQYJKoZIhvcNAQEL
BQADggEBAEm8HXmmxZ7B6Omcezuhle1Xz/9Iiaet2SnkSwm0dVmZXzyamWFHSls+
1biMtZb3Ath0TeDQ7kUh40SyFBKOTSWD8EhbgsMrys0ALUOJ16r2mGXbVdnoc/52
dm8jKXSqB/tKa4AXDQJkR6GNJtNu3k4XHSz25felkZosqGHdPmnQGiPDpJsFenxm
yD+nYTUrzrMM4FrBKLDex4mT0raFEkxN52wIwQ+UtI84OfxebztKSr+WCeafCKnV
idQrTBcM5zMdAPSgKIdh2kFOr3WdXgLonQiQ8GVleBdFGy0aw1LRVZ3+XsIrnEx2
L1dRm4u70iXtUwYw5tSaK6KNT7SJo00=
-----END CERTIFICATE REQUEST-----
用两个字来说,它说:
cn
Certificate request
Public Key Info
Key Algorithm: RSA
Key Parameters: 05 00
Key Size: 2048
Key SHA1 Fingerprint: E4 .. E9 49 A3 D3
Public Key: 30 82 01 0A 02 82 01 01 ... 03 01 00 01
现在最重要的是:
Extension
Identifier: Serial Number
Value: 55 44 49 44 3A 30 30 30 30 30 30 30 30 2D 37 61 30 65 2D 39 32 35 35 2D 66 66 66 66 2D 66 66 66 66 62 66 38 66 66 32 64 35
Critical: No
我希望这个分机序列号在我未来的证书中。
但当我做类似的事情时
openssl x509 -req -in ../req.req -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out user.crt -days 5000 -extensions v3_usr -CAcreateserial
我没有在result user.cer中获得扩展名。我做错了什么?您使用
-CAcreateserial
选项。记录如下:
-CAcreateserial
如果CA序列号文件不存在,则使用此选项创建CA序列号文件:它将包含序列号“02”,并且正在签名的证书将以1作为其序列号。如果指定了-CA选项且序列号文件不存在,则生成随机数;这是推荐的做法
要明确设置序列号,您可能需要使用选项-CAserial
:
-案例文件名
设置要使用的CA序列号文件
当使用-CA选项对证书进行签名时,它使用文件中指定的序列号。该文件由一行组成,其中包含偶数个十六进制数字和要使用的序列号。每次使用后,序列号将递增并再次写入文件
默认文件名由附加“.srl”的CA证书文件基名称组成。例如,如果CA证书文件名为“mycacert.pem”,它希望找到一个名为“mycacert.srl”的序列号文件
只需将所需的序列号写入文件并使用它。我怀疑有几个问题 首先,扩展值的格式不正确。它缺少
extnValue
字段的嵌套ASN.1类型标识符。根据,X.509扩展为:
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- contains the DER encoding of an ASN.1 value
-- corresponding to the extension type identified
-- by extnID
}
在extnValue
(即八进制字符串)下,您应该放置嵌套类型(我不知道序列号扩展的确切语法)。它可以是序列、另一个八位字节字符串或整数(因为序列号是整数)
但是,缺少嵌套类型:
在选定的八位字节字符串下应该有另一个嵌套节点,而您直接将序列号作为extnValue
payload放置
如果此扩展旨在指示CA在证书中放置指定的序列号(作为字段),则您违反了另一项要求:
证书用户必须能够处理serialNumber值
最多20个八位组。符合条件的CA不得使用serialNumber值
超过20个八位组
您的序列号看起来比20个八位字节长一点。此外,您可能违反本节第一部分:
对于给定CA(即
颁发者名称和序列号标识唯一的证书)
也就是说,如果用户要求特定的序列号,可能会导致序列号不唯一
编辑:
根据Ilya Matveychikov,嵌套类型应为可打印字符串。这意味着您的扩展值应为:
13 2B 55 44 49 44 3A 30 30 30 30 30 30 30 30 2D
37 61 30 65 2D 39 32 35 35 2D 66 66 66 66 2D 66
66 66 66 62 66 38 66 66 32 64 35
编码后,其外观如下所示:
根据定义,必须在extnValue
上放置PrintableString
:
serialNumber ATTRIBUTE ::= {
WITH SYNTAX PrintableString (SIZE (1..ub-serialNumber))
EQUALITY MATCHING RULE caseIgnoreMatch
SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
ID id-at-serialNumber
}
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。