教程:使用 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 中心对设备进行身份验证。