教程:使用 OpenSSL 创建自签名证书

可以使用两个自签名设备证书在 IoT 中心对设备进行身份验证。 此功能有时称作指纹身份验证,因为证书包含提交到 IoT 中心的指纹(哈希值)。 以下步骤说明如何创建两个自签名证书。

注意

此示例是使用适用于 Windows 的 Cygwin64 创建的。 Cygwin 是一个开源工具集合,允许 Unix 或 linux 应用程序在 Windows 上通过类似 Linux 的接口运行。 CygWin64 与 OpenSSL 捆绑在一起。 如果你使用的是 Linux,则可能已经安装 OpenSSL。

步骤 1 - 创建第一个证书的密钥

openssl genpkey -out device1.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048

步骤 2 - 创建第一个证书的 CSR

出现提示时,请确保指定设备 ID。

openssl req -new -key device1.key -out device1.csr

Country Name (2 letter code) [XX]:.
State or Province Name (full name) []:.
Locality Name (eg, city) [Default City]:.
Organization Name (eg, company) [Default Company Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server hostname) []:{your-device-id}
Email Address []:

步骤 3 - 检查 CSR

openssl req -text -in device1.csr -noout

步骤 4 - 对证书 1 进行自签名

openssl x509 -req -days 365 -in device1.csr -signkey device1.key -out device1.crt

步骤 5 - 创建第二个证书的密钥

openssl genpkey -out device2.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048

步骤 6 - 创建第二个证书的 CSR

出现提示时,请指定用于证书 1 的同一设备 ID。

openssl req -new -key device2.key -out device2.csr

Country Name (2 letter code) [XX]:.
State or Province Name (full name) []:.
Locality Name (eg, city) [Default City]:.
Organization Name (eg, company) [Default Company Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server hostname) []:{your-device-id}
Email Address []:

步骤 7 - 对证书 2 进行自签名

openssl x509 -req -days 365 -in device2.csr -signkey device2.key -out device2.crt

步骤 8 - 检索证书 1 的指纹

openssl x509 -in device1.crt -noout -fingerprint

步骤 9 - 检索证书 2 的指纹

openssl x509 -in device2.crt -noout -fingerprint

步骤 10 - 创建新的 IoT 设备

在 Azure 门户中导航到你的 IoT 中心,并创建具有以下特征的新 IoT 设备标识:

  • 提供与两个证书的使用者名称匹配的设备 ID
  • 选择“X.509 自签名”身份验证类型。
  • 粘贴从设备主要证书和辅助证书中复制的十六进制字符串指纹。 确保十六进制字符串不包含冒号分隔符。

后续步骤

前往“测试证书身份验证”,以确定证书是否可在 IoT 中心对设备进行身份验证。