OpenSSL 111: authorityKeyIdentifier

Dirk noadsplease at
Wed Mar 25 19:07:19 UTC 2020

Makes perfectly sense. Thank you. 

> Am 25.03.2020 um 18:49 schrieb Viktor Dukhovni <openssl-users at>:
> On Wed, Mar 25, 2020 at 05:47:01PM +0100, Dirk wrote:
>>>> My expectation (maybe wrong) is that the serial and the issuer name belong to
>>>> the same X509 certificate that the key id belongs to.
>>> Your expectation is "wrong".  The issuer DN in the AKID is in fact
>>> supposed to be the issuer's issuer.  It would be redundant to
>>> encode the issuer DN there, it is already present in the EE
>>> certificate.
>> Thank you Victor. Can you point me to the rfc that defines this?
> You could just save time and take my word for it, based on the logical
> argument that the issuer public key is identified by the serial number
> and DN of the CA that signed its certificate (the combination required
> to be unique) and that repeating the EE issuer DN would be redundant.
> The text in RFC 5280 is not terribly clear, but is basically a brief
> restatement of X.509.
> If you really want to puzzle over more text see (page 24, physical page
> 34 of):
> Authority key identifier extension
>    This field, which may be used as either a certificate extension or
>    CRL extension, identifies the public key to be used to verify the
>    signature on this certificate or CRL. It enables distinct keys used
>    by the same CA to be distinguished (e.g., as key updating occurs).
>    This field is defined as follows:
>    authorityKeyIdentifier EXTENSION ::= {
>        SYNTAX AuthorityKeyIdentifier IDENTIFIED BY id-ce-authorityKeyIdentifier
>    }
>    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} )
>    KeyIdentifier ::= OCTET STRING
>    The key may be identified by an explicit key identifier in the
>    keyIdentifier component, by identification of a certificate for the
>    key (giving certificate issuer in the authorityCertIssuer component
>    and certificate serial number in the authorityCertSerialNumber
>    component), or by both explicit key identifier and identification of
>    a certificate for the key. If both forms of identification are used
>    then the certificate or CRL issuer shall ensure they are consistent.
>    A key identifier shall be unique with respect to all key identifiers
>    for the issuing authority for the certificate or CRL containing the
>    extension. An implementation which supports this extension is not
>    required to be able to process all name forms in the
>    authorityCertIssuer component. (See for details of the
>    GeneralNames type.)
>    Certification authorities shall assign certificate serial numbers
>    such that every (issuer, certificate serial number) pair uniquely
>    identifies a single certificate. The keyIdentifier form can be used
>    to select CA certificates during path construction. The
>    authorityCertIssuer, authoritySerialNumber pair can only be used to
>    provide preference to one certificate over others during path
>    construction.
>    This extension is always non-critical.
> -- 
>    Viktor.

More information about the openssl-users mailing list