|
| 1 | +--- |
| 2 | +title: X.509 certificates | Microsoft Docs |
| 3 | +description: Reference documentation containing information about X.509 certificates, including certificate fields, certificate extensions, and certificate formats. |
| 4 | +author: kgremban |
| 5 | + |
| 6 | +ms.service: iot-hub |
| 7 | +services: iot-hub |
| 8 | +ms.topic: reference |
| 9 | +ms.date: 02/03/2022 |
| 10 | +ms.author: kgremban |
| 11 | +ms.custom: [mvc, 'Role: Cloud Development', 'Role: Data Analytics'] |
| 12 | +#Customer intent: As a developer, I want to be able to use X.509 certificates to authenticate devices to an IoT hub, and I need to know what file formats, fields, and other details are supported by Azure IoT Hub. |
| 13 | +--- |
| 14 | + |
| 15 | +# X.509 certificates |
| 16 | + |
| 17 | +X.509 certificates are digital documents that represent a user, computer, service, or device. They're issued by a certification authority (CA), subordinate CA, or registration authority and contain the public key of the certificate subject. They don't contain the subject's private key, which must be stored securely. Public key certificates are documented by [RFC 5280](https://tools.ietf.org/html/rfc5280). They're digitally signed and, in general, contain the following information: |
| 18 | + |
| 19 | +* Information about the certificate subject |
| 20 | +* The public key that corresponds to the subject's private key |
| 21 | +* Information about the issuing CA |
| 22 | +* The supported encryption and/or digital signing algorithms |
| 23 | +* Information to determine the revocation and validity status of the certificate |
| 24 | + |
| 25 | +## Certificate fields |
| 26 | + |
| 27 | +There are three incremental versions of the X.509 certificate standard, and each subsequent version added certificate fields to the standard: |
| 28 | + |
| 29 | +* Version 1 (v1), published in 1988, follows the initial X.509 standard for certificates. |
| 30 | +* Version 2 (v2), published in 1993, adds two fields to the fields included in Version 1. |
| 31 | +* Version 3 (v3), published in 2008, represents the current version of the X.509 standard. This version adds support for certificate extensions. |
| 32 | + |
| 33 | +This section is meant as a general reference for the certificate fields and certificate extensions available in X.509 certificates. For more information about certificate fields and certificate extensions, including data types, constraints, and other details, see the [RFC 5280](https://tools.ietf.org/html/rfc5280) specification. |
| 34 | + |
| 35 | +### Version 1 fields |
| 36 | + |
| 37 | +The following table describes Version 1 certificate fields for X.509 certificates. All of the fields included in this table are available in subsequent X.509 certificate versions. |
| 38 | + |
| 39 | +| Name | Description | |
| 40 | +| --- | --- | |
| 41 | +| [Version](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.1) | An integer that identifies the version number of the certificate.| |
| 42 | +| [Serial Number](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.2) | An integer that represents the unique number for each certificate issued by a certificate authority (CA). | |
| 43 | +| [Signature](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.3) | The identifier for the cryptographic algorithm used by the CA to sign the certificate. The value includes both the identifier of the algorithm and any optional parameters used by that algorithm, if applicable. | |
| 44 | +| [Issuer](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.4) | The distinguished name (DN) of the certificate's issuing CA. | |
| 45 | +| [Validity](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.5) | The inclusive time period for which the certificate is considered valid. | |
| 46 | +| [Subject](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.6) | The distinguished name (DN) of the certificate subject. | |
| 47 | +| [Subject Public Key Info](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.7) | The public key owned by the certificate subject. | |
| 48 | + |
| 49 | +### Version 2 fields |
| 50 | + |
| 51 | +The following table describes the fields added for Version 2, containing information about the certificate issuer. These fields are, however, rarely used. All of the fields included in this table are available in subsequent X.509 certificate versions. |
| 52 | + |
| 53 | +| Name | Description | |
| 54 | +| --- | --- | |
| 55 | +| [Issuer Unique ID](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.8) | A unique identifier that represents the issuing CA, as defined by the issuing CA. | |
| 56 | +| [Subject Unique ID](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.8) | A unique identifier that represents the certificate subject, as defined by the issuing CA. | |
| 57 | + |
| 58 | +### Version 3 fields |
| 59 | + |
| 60 | +The following table describes the field added for Version 3, representing a collection of X.509 certificate extensions. |
| 61 | + |
| 62 | +| Name | Description | |
| 63 | +| --- | --- | |
| 64 | +| [Extensions](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.9) | A collection of standard and Internet-specific certificate extensions. For more information about the certificate extensions available to X.509 v3 certificates, see [Certificate extensions](#certificate-extensions). | |
| 65 | + |
| 66 | +## Certificate extensions |
| 67 | + |
| 68 | +Certificate extensions, introduced with Version 3, provide methods for associating more attributes with users or public keys and for managing relationships between certificate authorities. For more information about certificate extensions, see the [Certificate Extensions](https://www.rfc-editor.org/rfc/rfc5280#section-4.2) section of the [RFC 5280](https://tools.ietf.org/html/rfc5280) specification. |
| 69 | + |
| 70 | +### Standard extensions |
| 71 | + |
| 72 | +The extensions included in this section are defined as part of the X.509 standard, for use in the Internet public key infrastructure (PKI). |
| 73 | + |
| 74 | +| Name | Description | |
| 75 | +| --- | --- | |
| 76 | +| [Authority Key Identifier](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.1) | An identifier that represents either the certificate subject and the serial number of the CA certificate that issued this certificate, or a hash of the public key of the issuing CA. | |
| 77 | +| [Subject Key Identifier](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.2) | A hash of the current certificate's public key. | |
| 78 | +| [Key Usage](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.3) | A bitmapped value that defines the services for which a certificate can be used. | |
| 79 | +| [Private Key Usage Period](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.3) | The validity period for the private key portion of a key pair. | |
| 80 | +| [Certificate Policies](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.4) | A collection of policy information, used to validate the certificate subject. | |
| 81 | +| [Policy Mappings](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.5) | A collection of policy mappings, each of which maps a policy in one organization to policy in another organization. | |
| 82 | +| [Subject Alternative Name](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.6) | A collection of alternate names for the subject. | |
| 83 | +| [Issuer Alternative Name](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.7) | A collection of alternate names for the issuing CA. | |
| 84 | +| [Subject Directory Attributes](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.8) | A collection of attributes from an X.500 or LDAP directory. | |
| 85 | +| [Basic Constraints](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.9) | A collection of constraints that allow the certificate to designate whether it's issued to a CA, or to a user, computer, device, or service. This extension also includes a path length constraint that limits the number of subordinate CAs that can exist. | |
| 86 | +| [Name Constraints](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.10) | A collection of constraints that designate which namespaces are allowed in a CA-issued certificate. | |
| 87 | +| [Policy Constraints](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.11) | A collection of constraints that can be used to prohibit policy mappings between CAs. | |
| 88 | +| [Extended Key Usage](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.12) | A collection of key purpose values that indicate how a certificate's public key can be used, beyond the purposes identified in the **Key Usage** extension. | |
| 89 | +| [CRL Distribution Points](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.13) | A collection of URLs where the base certificate revocation list (CRL) is published. | |
| 90 | +| [Inhibit anyPolicy](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.14) | Inhibits the use of the **All Issuance Policies** OID (2.5.29.32.0) in subordinate CA certificates |
| 91 | +| [Freshest CRL](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.15) | This extension, also known as the **Delta CRL Distribution Point**, contains one or more URLs where the issuing CA's delta CRL is published. | |
| 92 | + |
| 93 | +### Private Internet extensions |
| 94 | + |
| 95 | +The extensions included in this section are similar to standard extensions, and may be used to direct applications to online information about the issuing CA or certificate subject. |
| 96 | + |
| 97 | +| Name | Description | |
| 98 | +| --- | --- | |
| 99 | +| [Authority Information Access](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.2.1) | A collection of entries that describe the format and location of additional information provided by the issuing CA. | |
| 100 | +| [Subject Information Access](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.2.2) | A collection of entries that describe the format and location of additional information provided by the certificate subject. | |
| 101 | + |
| 102 | +## Certificate formats |
| 103 | + |
| 104 | +Certificates can be saved in various formats. Azure IoT Hub authentication typically uses the Privacy-Enhanced Mail (PEM) and Personal Information Exchange (PFX) formats. The following table describes commonly used files and formats used to represent certificates. |
| 105 | + |
| 106 | +| Format | Description | |
| 107 | +| --- | --- | |
| 108 | +| Binary certificate | A raw form binary certificate using Distinguished Encoding Rules (DER) ASN.1 encoding. | |
| 109 | +| ASCII PEM format | A PEM certificate (.pem) file contains a Base64-encoded certificate beginning with `-----BEGIN CERTIFICATE-----` and ending with `-----END CERTIFICATE-----`. One of the most common formats for X.509 certificates, PEM format is required by IoT Hub when uploading certain certificates, such as device certificates. | |
| 110 | +| ASCII PEM key | Contains a Base64-encoded DER key, optionally with more metadata about the algorithm used for password protection. | |
| 111 | +| PKCS #7 certificate | A format designed for the transport of signed or encrypted data. It can include the entire certificate chain. It's defined by [RFC 2315](https://tools.ietf.org/html/rfc2315). | |
| 112 | +| PKCS #8 key | The format for a private key store. It's defined by [RFC 5208](https://tools.ietf.org/html/rfc5208). | |
| 113 | +| PKCS #12 key and certificate | A complex format that can store and protect a key and the entire certificate chain. It's commonly used with a .p12 or .pfx extension. PKCS #12 is synonymous with the PFX format. It's defined by [RFC 7292](https://tools.ietf.org/html/rfc7292). | |
| 114 | + |
| 115 | +## For more information |
| 116 | + |
| 117 | +For more information about X.509 certificates and how they're used in IoT Hub, see the following articles: |
| 118 | + |
| 119 | +* [The layman’s guide to X.509 certificate jargon](https://techcommunity.microsoft.com/t5/internet-of-things/the-layman-s-guide-to-x-509-certificate-jargon/ba-p/2203540) |
| 120 | +* [Understand how X.509 CA certificates are used in IoT](./iot-hub-x509ca-concept.md) |
0 commit comments