我试图理解在RFC5280 (Internet X509、PKI证书和CRL配置文件)中定义自颁发证书概念的目的:
关于这一概念,RFC指出:
本规范涵盖两类证书:
CA证书可进一步分为三类:
交叉证书是CA证书,其中发行人和主体是不同的实体.交叉证书描述了两个CA之间的信任关系。自颁发证书是CA证书,其中发行人和被颁发者是同一实体.生成自颁发证书以支持策略或操作中的更改。自签名证书是自颁发证书,其中数字签名可以由被绑定到证书中的公钥进行验证。自签名证书用于传送用于开始证书路径的公钥.终端实体证书颁发给未经授权颁发证书的主体。
好吧,让我们深入探讨问题:
self-signed不能。为了清楚地回答上述问题,我想我也要问第二个问题:
嗯,我想是的,它不可能!因为这样的能力可以绕过根CA签署Intermediate的证书密钥使用数据的需要!
如果我是正确的,那么唯一能够颁发自颁发证书的实体就是根CA本身。但是为什么根CA可能需要自颁发证书呢?用例是什么?为什么不创建一个全新的根证书,而不是添加一个新成员到信任链,如果它需要新的属性?
如果我错了,这意味着一定有一些情况,中间CA将能够为自己颁发新的证书。如果是这样的话,一个中间CA是否可以通过使用扩展的证书密钥使用数据为自己颁发一个新的证书来扩展其证书功能?这不是信任链上的缺陷吗?此外,证书验证者如何才能发现信任链中的中间CA是否允许这样做?
发布于 2023-01-31 23:12:04
自我签发的证书和自签的证书到底有什么区别?
自颁发证书是颁发者名称和主题名称相同的证书.
自签名证书是使用与证书中的公钥匹配的私钥签名的证书。RFC 5280进一步限制该条款只适用于自行颁发的证书.
自行签发的证书不需要自行签署.下面是一个示例链,其中包含一个自颁发证书作为根(自签名)和中间(非自签名):
-----BEGIN CERTIFICATE-----
MIIBOzCBw6ADAgECAgQCAAAAMAoGCCqGSM49BAMCMA8xDTALBgNVBAMTBFNlbGYw
HhcNMjMwMTMxMjI1NzM0WhcNMjMwMTMxMjMwNzM0WjAPMQ0wCwYDVQQDEwRMZWFm
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/jQ9efIuXzQvKllT2z5EudFKPyHq
l48oObSTIG8lNoOdkCg3uz0A/ZSdVOlUr/UUI9o46QEDFuvo6RXPsxB8XqMNMAsw
CQYDVR0TBAIwADAKBggqhkjOPQQDAgNnADBkAjAsJVkGJrDh0X1/uZ5tHgfvCziw
CnoHd1Dme7PrmkHRiu73c8pw2oBnnpUbObWuUdkCMBxKjiAk8A1PtSYSHIOWFQx2
zZ4e3IHs2ksXR2czgpX3DnjfdWzBzk5Zg+ubHDrl3Q==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICUTCCATmgAwIBAgIEAQAAADANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRT
ZWxmMB4XDTIzMDEzMTIyNDczNFoXDTIzMDEzMTIzMTczNFowDzENMAsGA1UEAxME
U2VsZjB2MBAGByqGSM49AgEGBSuBBAAiA2IABKkn3SOCpGnXwNrqXER6ZCRjwI8R
UI94Dq0P23nBL/LCxv62KfQIk5E8q/OL3BgUuPG+W9UZToiT3MSnRhnhSNezu2D7
NDToMkUb1Y7N81MgMgCQDnm5mPd+1bfpTQFitaNjMGEwDwYDVR0TAQH/BAUwAwEB
/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFG06LdN0JEKz/09kt3ebThRw8JEJ
MB8GA1UdIwQYMBaAFPkA3D9/yC1hMOBqhF5ywbosxsUZMA0GCSqGSIb3DQEBCwUA
A4IBAQArK7DfRVxfTlQQFli1NLFRqZjHlWzWlDbTIwjuWWuZamxgk30QE8UV2ex+
FqBaiMI2fg9sMEdU+SW03BLreNd//hztu22ws/rPZokdt/NUoFmj+T+qWWj36e1E
vDLGf1XrfmAQRtDlLMfUofJNCcY3EOK0uD1gv6VDVh8OBwfCJG4J7UYrJlRtlJ9e
LXWoNp5bcekCrD9xbNihTbJs2XfFl090izEr3hzeNHFC49BfMsOrLsTVg7qbRYIM
Dm4CRL7FgEzCTUW4WQC/yXORKInaZyZfT7rTYvX2NFRStKc/7yLaA1xBAnFYDRdi
FQVzon2oAkEUMbmmZK57brpU9zI4
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC4jCCAcqgAwIBAgIIPK+1z76F+u4wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UE
AxMEU2VsZjAeFw0yMzAxMzEyMjQyMzRaFw0yMzAxMzEyMzIyMzRaMA8xDTALBgNV
BAMTBFNlbGYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDexGJ26Ax5
DtJahbhNodv/X6TLMYMzNHN6E5xce/SSREe+VAAnI2qvARIEc3KqTyHEdxsHmwmX
Zg3sA05BzYOBk647yNe1fLtTCjyyOIyfF2NfDQ03D/u55XeXAl6DojJC4QXHJos3
Oku5fATC3skBsAXLjSAzZqqPVIYcyEAbLVwYE7Msqnhj2CcUzMyjKsua/KYPtGh9
RUwQEu5bQ2PioCxSm24CkvNq7Ec1dIDzFEg1Md5UuQ/2Fyk+OCTfxqwmSRrqqxsE
DhOa4i7+gdbb+FdMw3NaN4Eyw5Egbcx0PMRW14Fj4hjle+jmUBYoMIQf4+R86Ys/
JxFuj09SM2nZAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
AgEGMB0GA1UdDgQWBBT5ANw/f8gtYTDgaoRecsG6LMbFGTANBgkqhkiG9w0BAQsF
AAOCAQEAtODz6pGv5TD+QDEAOB0vNx0Ua2gvKArbSAzSkgTzp7+mMDfcFvo44yqD
hlGZYuICCkxyq1QrtqRMvdI01zLJnIUl6fBnsn15jFrGEJarplh/FA2/6OhssuOV
SX/42w4aMdWpQiffnUcgXBkFuU0l/mMeBt/+Pd/QCh5iwjw7PqvAZ4WyNP1Z5PSr
5d6SKCsguBf3oyXnzwFIP8cOIxmDb7TLZmcqnx8hqUDUJBdLfteskEmXWqLa6VOF
PenfD6DtPgeTjbMcGFiXK2D8xLs24mbQHoq3+aURWJSA4sSBWp+6zdi6EaRovm3u
a8rSz5cMX2q5NpsxH+4dbTy7nWy2jw==
-----END CERTIFICATE-----根目录使用一个RSA-2048密钥,为了显示它们有多大的不同,中间层使用了ECDSA secp256r1密钥。
您可能会遇到混合里程与链引擎支持自颁发-但不是自签署证书。如果这些证书不是由主题密钥标识符+授权密钥标识符链接的,Windows链引擎将忽略基于RSA的Self,并表示它是一个两项链,但根的签名不能正确工作。默认情况下,OpenSSL链引擎甚至不检查自颁发证书的签名,该证书“很可能”是自签名的,因此它返回与CN=Self相同的两项链,但表示它工作得很好(如果您在同一个-CAfile文件中传递了两个"CN=Self“证书,那么它们都被视为可信的)。
中间CA是否能够为自己颁发具有不同属性的新证书(例如,使用扩展的证书密钥)?
好的。对于那些限制目标(扩展密钥使用、名称约束)的地方,已经存在针对链的缩小规则,新的CA不能“获得范围”,但是它肯定可以重写关于“自身”的属性。一般情况下还没有完成,但从技术上来说是可能的。
https://security.stackexchange.com/questions/268093
复制相似问题