[Update 5/27/2021: We have published a new blog post with more up-to-date guidance. Please read the new one here]
Microsoft is updating Azure services in a phased manner to use TLS server certificates from a different set of Certificate Authorities (CAs) beginning August 13, 2020 and concluding approximately on November 16, 2020. We expect that most Azure IoT customers that interact with IoT Hub and DPS will not be impacted; however, your application may be impacted if you explicitly specify a list of acceptable CAs (a practice known as “certificate pinning”). This change is limited to services in public Azure cloud and no sovereign cloud like Azure China.
This change is being made because the current CA certificates do not comply with one of the CA/Browser Forum Baseline requirements. This was reported on July 1, 2020 and impacts multiple popular Public Key Infrastructure (PKI) providers worldwide. Today, most of the TLS certificates used by Azure services are issued from the "Baltimore CyberTrust Root" PKI.
The following services used by Azure IoT devices will remain chained to the Baltimore CyberTrust Root*, but their TLS servercertificates will be issued by new Intermediate Certificate Authorities (ICAs) starting October 5, 2020 progressing regionally on a measured deployment schedule:
Azure IoT Hub
Azure IoT Hub Device Provisioning Service (DPS)
Azure Storage Services
If any client application or device has pinned to an Intermediate CA or leaf certificate rather than the Baltimore CyberTrust Root, immediate action is required to prevent disruption of IoT device connectivity to Azure.
*Other Azure service TLS certificates may be issued by a different PKI.
Certificate Renewal Summary
The table below provides information about the certificates that are being rolled. Depending on which certificate your device or gateway clients use for establishing TLS connections, action may be needed to prevent loss of connectivity.
Note: Both the intermediate and leaf certificates are expected to change frequently. We recommend not taking dependencies on them and instead pinning the root certificate as it rolls less frequently.
If your devices depend on the operating system certificate store for getting these roots or use the device/gateway SDKs as provided, then no action is required.
If your devices pin the Baltimore root CA among others, then no action is required related to this change.
If your device interacts with other Azure services (e.g. IoT Edge -> Microsoft Container Registry or Device -> Azure API Gateway), then you must pin additional roots as provided here.
If your devices use a connection stack other than the ones provided in an Azure IoT SDK, and pin any intermediary or leaf TLS certificates instead of the Baltimore root CA, then immediate action is required:
To continue without disruption due to this change, Microsoft recommends that client applications or devices pin the Baltimore root -
If your client applications, devices, or networking infrastructure (e.g. firewalls) perform any sub root validation in code, immediate action is required:
If you have hard coded properties like Issuer, Subject Name, Alternative DNS, or Thumbprint of any certificate other than the Baltimore Root CA, then you will need to modify this to reflect the properties of the newly pinned certificates.
Note: This extra validation, if done, should cover all the pinned certificates to prevent future disruptions in connectivity.
Update: The validation endpoints that were set up to facilitate testing of your devices against the new Intermediate CAs are no longer valid. If you are experiencing issues that surfaced after November 2020, please open a support request and describe the issue per the support section below.
We recommend performing some basic validation to mitigate any unintentional impact to your IoT infrastructure connecting to Azure IoT Hub and DPS. We have set up a test environment for your convenience to try out before we roll these certificates in production environments. The connection strings for this test environment are given below:
IoT Hub: Use the provided connection string in your device or simulated runtime to test TLS connectivity to IoT Hub -
Device Provisioning Service (DPS): Use your device ID and associated credential to authenticate with DPS using the following endpoint details -
Global Service Endpoint: global-canary.azure-devices-provisioning.net
ID SCOPE: 0ne0017FD54
A successful TLS connection to the test environment indicates a positive test outcome - that your infrastructure will work as is with these changes. The test connection string for IoT Hub contains an invalid key, so once the TLS connection has been established, any run time operations performed against this test IoT Hub will fail. For DPS, since your device has not been formally enrolled in this specific DPS instance, it is expected to get an authorization error. This is by design since these resources exist solely for customers to validate their TLS connectivity. The test environment will be available until all public cloud regions have been updated.
If you have any technical questions on implementing these changes or help in performing validation in the test environment, please open a support request with the options below and a member from our engineering team will get back to you shortly.
Issue Type: Technical
Service: IoT SDKs
Summary: TLS Baltimore upgrade question
Problem type: Connectivity
Problem subtype: Unable to connect
Fig 1: Sample support request
IoT Show: To know more about TLS certificates and PKI changes related to Azure IoT, please check out the IoT Show:
Microsoft wide communications: To broadly notify customers, Microsoft had sent a Service Health portal notification on Aug 3rd, 2020 and released a public document that include timelines, actions that need to be taken, and details regarding the upcoming changes to our Public Key Infrastructure (PKI).