Openssl x509限制中间CA仅签署最终用户证书

Openssl x509限制中间CA仅签署最终用户证书,openssl,ssl-certificate,x509,Openssl,Ssl Certificate,X509,我试图限制中间CA只对最终用户证书进行签名。但是,我不能这样做 x509v3_配置的手册页 basicConstraints=临界,CA:真,路径:0 CA证书必须包含CA的基本约束值 字段设置为TRUE。最终用户证书必须将CA设置为 FALSE或完全排除扩展名。某些软件可能需要 对于结束实体,包含CA设置为FALSE的基本约束 证书 pathlen参数表示链中可出现在该CA下方的CA的最大数量。所以如果你有一个CA和一个pathlen 如果为零,则它只能用于签署最终用户证书,而不是 进一步CA

我试图限制中间CA只对最终用户证书进行签名。但是,我不能这样做

x509v3_配置的手册页

basicConstraints=临界,CA:真,路径:0

CA证书必须包含CA的基本约束值 字段设置为TRUE。最终用户证书必须将CA设置为 FALSE或完全排除扩展名。某些软件可能需要 对于结束实体,包含CA设置为FALSE的基本约束 证书

pathlen参数表示链中可出现在该CA下方的CA的最大数量。所以如果你有一个CA和一个pathlen 如果为零,则它只能用于签署最终用户证书,而不是 进一步CAs

步骤1:创建自签名根CA-rootCA.crt

openssl genrsa -out rootCA.key 4096

openssl req -x509 -new -nodes -key rootCA.key -sha256 -out rootCA.crt
步骤2:使用以下配置文件创建证书签名请求

openssl req -new -config extension.conf -out intermediate.csr
CSR现在生成

步骤3:现在使用扩展文件支持的自签名根CA对CSR进行签名

openssl x509 -req -in intermediate.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -extensions v3_req -extfile file.txt -out intermediate.crt -sha256
file.txt

[ v3_req ]
 subjectKeyIdentifier   = hash
 authorityKeyIdentifier = keyid:always
现在生成了中间证书

步骤4:再创建一个中间证书,并将其称为测试证书-使用经过适当修改的配置文件,如下所示:

[ req ]
 default_bits       = 4096
 default_md         = sha256
 prompt             = no
 encrypt_key        = no
 default_keyfile    = privkey.key
 distinguished_name = req_distinguished_name
 req_extensions     = v3_req
 
 [ req_distinguished_name ]
 countryName            = DE
 stateOrProvinceName    = Berlin
 localityName           = Berlin
 0.organizationName     = Dummy AG
 organizationalUnitName = Product
 emailAddress           = product.dept@dummy.de
 
 [ v3_req ]
 basicConstraints       = critical,CA:true
 keyUsage               = keyCertSign
产生企业社会责任

openssl req -new -config test.conf -out TEST.csr
在CSR上签名为intermediate.crt,这是不可能的

openssl x509 -req -in TEST.csr -CA intermediate.crt -CAkey privkey.key -CAcreateserial -out TEST.crt -sha256
根据x509v3_configman页面,TEST.csr的签名应该失败,因为它不是最终用户证书


在我的中间证书中,路径为0。所以我不应该在TEST.csr上签名。我做错了什么?请有人解释一下好吗?

对您的最后一个证书进行验证。它是否被认为是有效的?如果没有,那么一切都好。这是交叉张贴到,可能是一个更好的适合那里。我建议在这里关闭它。因为我不确定哪个是正确的论坛,我在两个网站上都发了帖子。我会关上这个。非常感谢。
openssl x509 -req -in TEST.csr -CA intermediate.crt -CAkey privkey.key -CAcreateserial -out TEST.crt -sha256