Azure 物联网中心 - TLS 连接和 x.509 身份验证

标签 azure ssl azure-iot-hub azure-iot-edge

我对 Azure IOT 中心概念不熟悉,
我正在尝试将我的 IOT 设备与 Azure IOT 集线器连接,默认情况下,我们在 azure iot 集线器中支持 TLS,这意味着与设备的所有通信都将受到 TLS 的保护。 为了对设备进行身份验证,azure 建议使用 x.509 证书,除了身份验证之外,该证书还带来哪些额外的安全性? ,既然通信已经安全,为什么我们不能简单地使用对称 key ,如果我的物联网设备几乎不可编译?。在设备中保存私钥与保存对称 key 相同,是吗?

最佳答案

TLS 有助于为设备和 IoT 中心之间传输的数据提供加密和完整性保护,但不会向设备提供任何身份验证。

X.509 证书提供了一种对设备进行身份验证并确保其有权连接到 IoT 中心的方法。

对称 key 身份验证比使用X.509证书安全性较低,因为加密和解密使用相同的 key 。

X.509 证书 使用公钥加密技术来提供更安全的身份验证方法。设备具有用于对消息进行签名的私钥,IoT 中心具有用于验证签名的公钥。这可确保只有经过授权的设备才能连接到 IoT 中心,并且从设备发送的数据不会被篡改。

使用自签名证书

New-SelfSignedCertificate -DnsName "example.com" -CertStoreLocation "Cert:\CurrentUser\My"

enter image description here

enter image description here

向物联网设备发送消息的代码

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);

enter image description here

有关更多信息,请参阅MSDoc.

关于Azure 物联网中心 - TLS 连接和 x.509 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76061979/

相关文章:

javascript - 如何在Azure Function App中进行XHR

javascript - JS 在 Rails 中无法在 SSL 下工作

ssl - 如何为使用 nginx、gunicorn 和 flask 的 GCP 实例设置 SSL 证书?

iphone - (iphone) 如何将密码发送到我的服务器?

c - 交叉编译iot hub sdk时链接错误

将数据推送到 Cosmos DB 时 Azure 流分析作业降级

azure - K8S - 获取配置 map 数据问题

.net - 用于处理传感器数据的 Service Fabric Actor

javascript - Three.js 在 Azure 中加载 .OBJ 错误,但在本地则不然

c# - 有没有直接的方法将容器日志从物联网边缘设备发送到azure日志分析工作区?