[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Authority Key Id.



Krylov Pavel wrote:
> 
> Hi all!
> I read about Authority Key Id. and found some strange things.
> How I know, certificate is distinguishable from all others certificates
> by couple { IssuerCA, SerialNumber }. But Authority Key Id. ( AKId )
> contains authorityCertSerialNumber! Does it mean that I can separate CA
> certificate by couple {Issuer[of current end-user cert] + AltIssuerName,
> SerialNumber(from AKId)} ?

No.  AuthorityKeyIdentifier (in the non-KeyIdentifier usage) contains
the both the IssuerName and SerialNumber of the issuer certificate.  
That is, authorityCertIssuer and authorityCertSerialNumber must be
present as a pair.  The official ASN.1 looks something like:

AuthorityKeyIdentifier ::= SEQUENCE {
	keyIdentifier			[0] KeyIdentifier		OPTIONAL,
	authorityCertIssuer		[1] GeneralNames		OPTIONAL,
	authorityCertSerialNumber	[2] CertificateSerialNumber 	OPTIONAL }
	( WITH COMPONENTS 	{..., authorityCertIssuer PRESENT, 
					authorityCertSerialNumber PRESENT} |
	 WITH COMPONENTS	{..., authorityCertIssuer ABSENT,
					authorityCertSerialNumber ABSENT} )



> 
>    AuthorityKeyIdentifier ::= SEQUENCE {
>       keyIdentifier             [0] KeyIdentifier           OPTIONAL,
>       authorityCertIssuer       [1] GeneralNames            OPTIONAL,
>       authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL  }
> 
> How I understand it's wrong. Example:
> 
> CA1 { SN1, Issuer1, Issuer1, .. }       CA2 {SN2, Issuer2, Issuer2, ..}
>                 |                                       |
>                 |                                       |
>                 |                                       |
> CA3:            V                                       V
>         { SN0, Issuer1, Subject3, .. }  {SN0, Issuer2, Subject3, .. }
>                                 |
>                                 |
>                                 |
> end-user                        V
> cert:           { SN123, Issuer3, Subject123, ..., AKId{[2] SN0}}

The end user cert would be:

                  { SN123, Issuer3, Subject123, ..., AKId{[1] Issuer1 [2] SN0}}


> 
> How can end-user software understand which certificate is needed?
> or Is authorityCertSerialNumber support field?
> 
> And another questions:
>         Certificate contains IssuerName and Alt.IssuerName. Well
>         then, for what purposes does AKId contain authorityCertIssuer?
>         Is it alias name for IssuerCA? or Does it match with
>         { IssuerName, Alt.IssuerName }?
> 
> What did I misunderstand?
> Thanks a lot.
> 
> ___________________________________________
> Pavel Krylov    Pavel.Krylov@trustworks.com