Skip to content

Commit cb71ec5

Browse files
committed
Draft, in progress
1 parent 51f6a07 commit cb71ec5

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

articles/iot-hub/reference-x509-certificates.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ ms.custom: [mvc, 'Role: Cloud Development', 'Role: Data Analytics']
1414

1515
# X.509 certificates
1616

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:
17+
X.509 certificates are digital documents that represent a user, computer, service, or device. A certificate authority (CA), subordinate CA, or registration authority issues X.509 certificates. The certificates contain the public key of the certificate subject. They don't contain the subject's private key, which must be stored securely. [RFC 5280](https://tools.ietf.org/html/rfc5280) documents public key certificates, including their fields and extensions. Public key certificates are digitally signed and typically contain the following information:
1818

1919
* Information about the certificate subject
2020
* The public key that corresponds to the subject's private key
@@ -42,7 +42,7 @@ The following table describes Version 1 certificate fields for X.509 certificate
4242
| [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). |
4343
| [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. |
4444
| [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. |
45+
| [Validity](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.5) | The inclusive time period for which the certificate is valid. |
4646
| [Subject](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.6) | The distinguished name (DN) of the certificate subject. |
4747
| [Subject Public Key Info](https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.7) | The public key owned by the certificate subject. |
4848

@@ -69,7 +69,7 @@ Certificate extensions, introduced with Version 3, provide methods for associati
6969

7070
### Standard extensions
7171

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).
72+
The X.509 standard defines the extensions included in this section, for use in the Internet public key infrastructure (PKI).
7373

7474
| Name | Description |
7575
| --- | --- |
@@ -108,37 +108,37 @@ Certificates can be saved in various formats. Azure IoT Hub authentication typic
108108
| Binary certificate | A raw form binary certificate using Distinguished Encoding Rules (DER) ASN.1 encoding. |
109109
| 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. |
110110
| 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). |
111+
| PKCS #7 certificate | A format designed for the transport of signed or encrypted data. It can include the entire certificate chain. [RFC 2315](https://tools.ietf.org/html/rfc2315) defines this format. |
112+
| PKCS #8 key | The format for a private key store. [RFC 5208](https://tools.ietf.org/html/rfc5208) defines this format. |
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. [RFC 7292](https://tools.ietf.org/html/rfc7292) defines this format. |
114114

115115
## Self-signed certificates
116116

117-
You can authenticate a device to your IoT hub for testing purposes by using two self-signed certificates. This type of authentication is sometimes called *thumbprint authentication* because the certificates are identified by calculated values, called *fingerprints* or *thumbprints*, that you submit to your IoT hub for your device.
117+
You can authenticate a device to your IoT hub for testing purposes by using two self-signed certificates. This type of authentication is sometimes called *thumbprint authentication* because the certificates are identified by calculated hash values called *fingerprints* or *thumbprints*. These calculated hash values are used by IoT Hub to authenticate your devices.
118118

119119
>[!IMPORTANT]
120120
>We recommend that you use certificates signed by an issuing Certificate Authority (CA), even for testing purposes. Never use self-signed certificates in production.
121121
122122
### Create a self-signed certificate
123123

124-
You can use [OpenSSL](https://www.openssl.org/) to create self-signed certificates. The following steps show you how to run OpenSSL commands in a bash shell to create a self-signed certificate and retrieve a certificate fingerprint that can be used for your device.
124+
You can use [OpenSSL](https://www.openssl.org/) to create self-signed certificates. The following steps show you how to run OpenSSL commands in a bash shell to create a self-signed certificate and retrieve a certificate fingerprint that can be used for authenticating your device in IoT Hub.
125125

126126
>[!NOTE]
127127
>If you want to use self-signed certificates for testing, you must create two certificates for each device.
128128
129-
1. Run the following command to generate a private key and create a PEM-encoded .key file, replacing the following placeholders with their corresponding values. The private key generated by the following command uses the RSA algorithm with 2048-bit encryption.
129+
1. Run the following command to generate a private key and create a PEM-encoded private key (.key) file, replacing the following placeholders with their corresponding values. The private key generated by the following command uses the RSA algorithm with 2048-bit encryption.
130130

131-
*{KeyFile}*. The name of your .key file.
131+
*{KeyFile}*. The name of your private key file.
132132

133133
```bash
134134
openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
135135
```
136136

137-
1. Run the following command to generate a PKCS #10 certificate signing request (CSR) and create a .csr file, replacing the following placeholders with their corresponding values. Make sure that you specify the device ID of the IoT device for your self-signed certificate when prompted.
137+
1. Run the following command to generate a PKCS #10 certificate signing request (CSR) and create a CSR (.csr) file, replacing the following placeholders with their corresponding values. Make sure that you specify the device ID of the IoT device for your self-signed certificate when prompted.
138138

139-
*{KeyFile}*. The name of your .key file.
139+
*{KeyFile}*. The name of your private key file.
140140

141-
*{CsrFile}*. The name of your .csr file.
141+
*{CsrFile}*. The name of your CSR file.
142142

143143
*{DeviceID}*. The name of your IoT device.
144144

@@ -161,27 +161,27 @@ You can use [OpenSSL](https://www.openssl.org/) to create self-signed certificat
161161

162162
1. Run the following command to examine and verify your CSR, replacing the following placeholders with their corresponding values.
163163

164-
*{CsrFile}*. The name of your .csr file.
164+
*{CsrFile}*. The name of your certificate file.
165165

166166
```bash
167167
openssl req -text -in {CsrFile} -verify -noout
168168
```
169169

170-
1. Run the following command to generate a self-signed certificate and create a .crt file in PEM format, replacing the following placeholders with their corresponding values. The command converts and signs your CSR with your private key, generating a self-signed certificate that expires in 365 days.
170+
1. Run the following command to generate a self-signed certificate and create a PEM-encoded certificate (.crt) file, replacing the following placeholders with their corresponding values. The command converts and signs your CSR with your private key, generating a self-signed certificate that expires in 365 days.
171171

172-
*{KeyFile}*. The name of your .key file.
172+
*{KeyFile}*. The name of your private key file.
173173

174-
*{CsrFile}*. The name of your .csr file.
174+
*{CsrFile}*. The name of your CSR file.
175175

176-
*{CrtFile}*. The name of your .crt file.
176+
*{CrtFile}*. The name of your certificate file.
177177

178178
```bash
179179
openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
180180
```
181181

182-
1. Run the following command to retrieve the fingerprint for the certificate, replacing the following placeholders with their corresponding values. The fingerprint of a certificate is unique to that certificate. You'll need the fingerprint to configure your IoT device in IoT Hub for testing.
182+
1. Run the following command to retrieve the fingerprint of the certificate, replacing the following placeholders with their corresponding values. The fingerprint of a certificate is a calculated hash value that is unique to that certificate. You need the fingerprint to configure your IoT device in IoT Hub for testing.
183183

184-
*{CrtFile}*. The name of your .crt file.
184+
*{CrtFile}*. The name of your certificate file.
185185

186186
```bash
187187
openssl x509 -in {CrtFile} -noout -fingerprint

0 commit comments

Comments
 (0)