我正在研究X509证书结构,这里是一个生成证书的OpenSSL配置文件。(“某物”只是指实际的字符串被移除)
[ req ]
prompt = no
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
[ req_distinguished_name ]
countryName = sth
localityName = sth
organizationalUnitName = sth
commonName = sth
emailAddress = sth
[ v3_ca ]
basicConstraints = critical, CA:TRUE, pathlen:1
keyUsage = critical, keyCertSign以下是我的问题:
basicConstraints = critical, CA:TRUE, pathlen:1发布于 2016-05-26 21:10:51
所有答案都可以在定义X.509证书格式的RFC 5280中找到。
req_distinguished_name是什么意思?是如何使用的?看起来OpenSSL正在以.ini格式吐痰,所以我猜
distinguished_name = req_distinguished_name意味着所需的可分辨名称信息可以在下面的tho[req_distinguished_name]部分中找到。类似地,
x509_extensions = v3_ca这意味着可以在[v3_ca]部分找到扩展内容。
在X.509中,区分名称(DN)是持有此证书的个人或服务器的唯一标识符。DNs的结构与URL中的域名非常相似,从国家代码开始,一直到个人或服务器的名称。
basicConstraints = critical, CA:TRUE, pathlen:1基本约束扩展标识证书的主题是否为CA,以及包含此证书的有效证书路径的最大深度。
因此,CA:TRUE, pathlen:1意味着这是一个自签名的根CA,它只能发出最终用户证书,而不是从属CA,因为它们发出的任何证书都会有路径end> 1。
证书中的每个扩展都被指定为关键的或非关键的.使用证书的系统如果遇到它不识别的关键扩展或包含它无法处理的信息的关键扩展,则必须拒绝证书。非关键扩展如果不被识别,则可能被忽略,但如果被识别,则必须进行处理。
因此,基本上,critical意味着这些数据中的错误应该被认为是致命的,非关键的意味着错误可以被忽略。
发布于 2016-05-26 21:09:57
req_distinguished_name是什么意思?它是如何使用的?
这是将在您的证书请求中使用的区分名称(DN)。这通常是一个描述公钥所有者的字符串,通常在这里可以看到诸如公共名称(CN)和电子邮件地址之类的内容。此外,您还可以在这里放置区域和组织识别信息(例如组织名称(O)、组织单位(OU)、国家、州和城市)。
在basicContraints中,批判性和路径性意味着什么?
关键的意思是:"100%确保您强制执行这个规则!“,也就是说,如果实现不理解这个扩展的含义,它应该会失败验证。路径控制证书颁发路径的深度,如果设置了pathlen=0,则只能颁发终端实体证书(或无效CA ),例如,如果您拥有中间CA,只有每个CA都应该颁发此类证书,或者您已经出售了中间CA,但不希望客户自行颁发CA证书,则这被认为是一项功能。本质上,pathlen计算当前CA证书和end实体证书之间CA的最大数量。也就是说,在pathlen为1的情况下,在当前CA和end实体之间仍然可以有一个中间CA,但是CA只能发出end实体证书。(在这个答案的前一个版本中,感谢梅花的让我意识到一个错误 )。
在keyUsage中临界意味着什么?
和上面一样。"100%确保强制执行此规则!“,即实现必须强制执行密钥使用,如果它不理解/不知道扩展验证必须失败,例如,密钥仅用于执行相关证书允许的内容,任何其他密钥使用也应被与该密钥的签名/加密数据交互的其他实现拒绝。在您的情况下,这意味着所颁发的证书对数据的签名或加密无效,因此任何兼容的应用程序都将拒绝将根据该证书签名的数据加密为“无效”。
发布于 2017-10-04 13:15:29
Mike和SEJPM的现有答案都很好,但对于pathlen=1的含义都是错误的。使用pathlen=1,您仍然能够向can颁发证书,而使用pathlen=0,您只能颁发终端实体证书。这是堆栈溢出的另一个答案很好地解释了这个问题。
https://crypto.stackexchange.com/questions/35608
复制相似问题