dotnet / dotnet/MQTTnet

Question: missing documentation / sample for using Client Certificates with the new MqttClientOptionsBuilder / WithTlsOptions / WithClientCertificatesProvider

Open
#2,040 4 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
C#
Stars
5.1k
Forks
1.2k
PR merge metrics
No merged PRs in 30d

Description

### Describe your question
I upgraded to `4.3.6.1152` coming from `4.2.1.781`

### Which project is your question related to?
I was using this code to **attach client certificates** for MQTT client authentication:
``` c#
var mqttClientOptions = new MqttClientOptionsBuilder()
.WithTcpServer(
connectionInfo.MqttConnectionInformation.MqttUri,
connectionInfo.MqttConnectionInformation.MqttPort)
.WithClientId(connectionInfo.MqttConnectionInformation.ClientId)
.WithTls(new MqttClientOptionsBuilderTlsParameters
{
UseTls = true,
SslProtocol = System.Security.Authentication.SslProtocols.Tls12,

// this is one X509Certificate2
Certificates = new[] { myClientCertificates },
CertificateValidationHandler = delegate { return true; },
})
.WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500)
.Build();
```

This was throwing the following warnings:

> warning CS0618: 'MqttClientOptionsBuilderTlsParameters' is obsolete: 'Use methods from MqttClientOptionsBuilder instead.'
warning CS0618: 'MqttClientOptionsBuilderTlsParameters.Certificates' is obsolete: 'Use CertificatesProvider instead.'
warning CS0618: 'MqttClientOptionsBuilder.WithTls(MqttClientOptionsBuilderTlsParameters)' is obsolete: 'Use WithTlsOptions(... configure) instead.'

I managed to resolve the ssl protocol and validation warning but I do not know how to resolve the issue with the `CertificatesProvider`. There is no sample or documentation (I could find) on how to do this. Can you please help me out here?

``` c#
var mqttClientOptions = new MqttClientOptionsBuilder()
.WithTcpServer(
connectionInfo.MqttConnectionInformation.MqttUri,
connectionInfo.MqttConnectionInformation.MqttPort)
.WithClientId(connectionInfo.MqttConnectionInformation.ClientId)
.WithTlsOptions(opt =>
{
opt.WithSslProtocols(SslProtocols.Tls12);
opt.WithCertificateValidationHandler(_ => true);
opt.WithClientCertificatesProvider(...???...);
})
.WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500)
.Build();

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.