我是 Azure 物联网中心概念的新手,
我正在尝试将我的 IOT 设备与 Azure IOT 集线器连接,默认情况下,我们在 Azure IOT 集线器中支持 TLS,这意味着与设备的所有通信都将受到 TLS 的保护。
为了对设备进行身份验证,azure 建议使用 x.509 证书,除了身份验证之外,该证书带来的额外安全性是什么? ,既然通信已经是安全的,为什么我们不能简单地使用对称密钥,如果我的物联网设备几乎不可压缩?。在设备中保存私钥将与保存对称密钥相同是吗?
TLS 有助于为设备和 IoT 中心之间传输的数据提供加密和完整性保护,不向设备提供任何身份验证。
X.509 certificates
提供了一种方法来验证设备并确保它被授权连接到 IoT 中心。
Symmetric keys authentication
不如使用 X.509 certificates
安全,因为加密和解密使用相同的密钥。
和
X.509 certificates
使用公钥加密来提供更安全的身份验证方法。设备有一个用于签署消息的私钥,而 IoT 中心有一个用于验证签名的公钥。这确保只有授权的设备才能连接到 IoT 中心,并且从设备发送的数据没有被篡改。
使用自签名证书
New-SelfSignedCertificate -DnsName "example.com" -CertStoreLocation "Cert:\CurrentUser\My"
向物联网设备发送消息的代码
var cert = new X509Certificate2("C:\\Tools\\cert\\MyCert.cer");
var auth = new DeviceAuthenticationWithX509Certificate("mydevice", cert);
var DClnt = DeviceClient.Create("HostName", auth);
var msg = new Message(Encoding.ASCII.GetBytes("Test message"));
await DClnt.SendEventAsync(msg);
有关更多信息,请参阅 MSDoc.