Edit

Bring your own CA

This article explains how to create an intermediate certificate authority within your Azure Device Registry namespace that is signed and issued by an external CA. Use this workflow if your organization maintains a private Public Key Infrastructure (PKI) and requires all IoT devices to chain up to a common trusted root.

Tip

If you do not possess an external root CA but would like to test this flow, see the additional instructions below to get started with a self-signed root CA and private key using OpenSSL.

Important

Azure IoT Hub with Azure Device Registry integration and Microsoft-backed X.509 certificate management is in public preview and isn't recommended for production workloads. For more information, see FAQ: What is new in IoT Hub?.

Prerequisites

Before you begin, make sure you have the required setup and permissions so you can create, activate, and edit an external CA policy without deployment delays.

  • An active Azure subscription. If you don't have one, create a free account.
  • An existing Device Registry namespace. For setup steps, see Deploy Azure IoT Hub with ADR integration.
  • Permissions to manage policies in the Device Registry namespace, such as the Azure Device Registry Credentials Contributor role.
  • CA signing authority: Access to an external PKI (or a managed CA) to perform a one-time signing operation. You need to upload a Microsoft-generated CSR and have your root CA sign it to create the intermediate CA (ICA) certificate.

Requirements for your external CA

To use an external CA, your CA must meet the following requirements:

Property Requirements
Key type and cryptography The CA key type must be ECC (P-256, P-384, P-521) with OID 1.2.840.10045.2.1. Explicit EC parameters are rejected, only named curve encoding (OID) is allowed. RSA is rejected.
Signature Signature algorithm must be SHA-256 or higher with ECDSA (ecdsa-with-SHA256, SHA384, or SHA512). SHA-1 is rejected.
Path length Path length for your CA must be set to 1.
Subject The subject on the signed certificate must match the subject from the original CSR (case-insensitive with whitespace normalization)
Extensions BasicConstraints must be present, marked critical, with CA:TRUE. KeyUsage must include DigitalSignature, KeyCertSign, and CrlSign. If the EKU extension is present, it must include ClientAuth (OID 1.3.6.1.5.5.7.3.2). If EKU is absent entirely, that's acceptable (unconstrained CA per RFC 5280). Subject Key Identifier (SKI) must be present. X.509 Version must be Version 3.
Validity period Certificate must not be expired. Certificate NotBefore must not be in the future. Must have at least 365 days of remaining validity.

Choose the workflow that matches how you operate your environment.

Create an intermediate CA that an external CA signs

  1. Sign in to the Azure portal.

  2. Open your Azure Device Registry namespace.

  3. On the Certificate Authorities page, select Create.

  4. Select Intermediate Certificate Authority.

  5. Select Use an external CA, enter a name for the intermediate CA, and then select Create.

  6. Refresh the Certificate Authorities list if needed. Select the certificate authority and confirm the status is Pending Activation.

  7. Select the Pending Activation link.

  8. In the banner, select Complete Setup.

  9. Select Download certificate signing request (CSR) file.

    Screenshot showing certificate signing request download link.

  10. Upload the certificate signing request to your external CA. Have your CA sign the certificate. The signed certificate's subject must exactly match the subject of the original CSR.

    If you don't have an external root CA, you can use this resource to create one: Create a self-signed root CA and private key using OpenSSL and PowerShell.

  11. Select and upload the signed full certificate chain.

  12. Select Save to activate the certificate authority.

  13. Refresh the certificate authority details and verify the status is active.