【发布时间】:2020-12-23 01:21:27
【问题描述】:
我希望你能在这里帮助我。 我正在尝试制作一个 MQTT 客户端(应用服务环境中的天蓝色函数),它从 MQTT 代理(hivemq)中提取数据,但在证书方面我有点迷失(我不是专家)。
无论如何,我从我们的合作伙伴(MQTT 代理那里)收到了 3 个文件(如下所示),但问题是。我应该如何在应用程序中使用这些 PEM 文件?
- 客户端证书 == mqtt-client-cert.pem
- 客户端密钥 == mqtt-client-key_nopass.pem
- CA 证书 == server.pem
这是应用程序,这是我在本地(使用 crt 证书)针对测试代理 (test.mosquitto.org) 对其进行测试的示例。它工作得很好,但现在我只需要做同样的事情,只需要 3 个 PEM 文件。
我还怀疑我需要在 Azure 上做一些事情(在函数应用或应用服务环境级别)才能使用这些证书?
// Create a new MQTT client.
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
// Load certificate
X509Certificate caCertificate = new X509Certificate(@"..\mosquitto.org.crt");
// Create TLS based parameters.
var tlsParameters = new MqttClientOptionsBuilderTlsParameters
{
UseTls = true,
Certificates = new List<X509Certificate> { caCertificate },
SslProtocol = System.Security.Authentication.SslProtocols.Tls12
};
// Create TCP based options using the builder.
var connectOptions = new MqttClientOptionsBuilder()
.WithTcpServer("test.mosquitto.org", 8883)
.WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V311)
.WithTls(tlsParameters)
.Build();
var conResult = await mqttClient.ConnectAsync(connectOptions);
mqttClient.UseConnectedHandler(e =>
{
Console.Write("Connected successfully with MQTT Brokers.");
});
mqttClient.UseDisconnectedHandler(e =>
{
Console.Write("Disconnected from MQTT Brokers.");
});
【问题讨论】:
标签: .net-core mqtt pem azure-function-app