# Mosquitto

mosquitto.conf
```bash
# Mosquitto configuration

# Plain listener - Partie 1
# utilisé uniquement par le healthcheck docker
listener 1883
allow_anonymous true

# TLS listener - Partie 2
listener 8883
protocol mqtt
allow_anonymous true
cafile   /mosquitto/certs/ca.crt
certfile /mosquitto/certs/server.crt
keyfile  /mosquitto/certs/server.key
require_certificate true

# Logging - Partie 3
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
log_type all
log_timestamp true
log_timestamp_format %Y-%m-%dT%H:%M:%S
connection_messages true

```
<br>

Le fichier de configuration est séparé en 3 parties
|Partie|Explication|
|---|---|
|Partie 1 |Paramètres des connexions non-sécurisées|
|Partie 2 |Paramètres des connexions sécurisées|
|Partie 3 |Gestions des paramètres des logs MQTT|


#### Partie 1

|Paramètre|configuration|Explication|
|---|---|---|
|`listener`|1883|défini le port d'écoute sur lequel la configuration suivante va s'appliquer|
|`allow_anonymous`|false|*Explication ci-dessous*|

#### Partie 2

|Paramètre|configuration|Explication|
|---|---|---|
|`listener`|8883|défini le port d'écoute sur lequel la configuration suivante va s'appliquer|
|`require_certificate`|false|autorise **uniquement** les connexions sécurisé sur le port du `listener` concerné (ici 8883)|
|`protocol`|mqtt|Défini le(s) protocole(s) en attente sur ce port|
|`allow_anonymous`|true|*Explication ci-dessous*|
`cafile` | /mosquitto/certs/ca.crt | Chemin d'accès du certificat d'autorité du serveur, utilisé pour vérifier les clients
`certfile` | /mosquitto/certs/server.crt | Chemin d'accès du certificat public du serveur. Ce que Mosquitto présente aux clients lors de la connexion TLS
`keyfile` | /mosquitto/certs/server.key | Chemin d'accès de la clé privée du serveur

##### paramètre important Partie 1 & 2 : 
`allow_anonymous`:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `true`  = mTLS — le client et le serveur prouvent leur identité mutuelement
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `false` = TLS simple — le serveur prouve son identité au client
<br>
`tls_version`:
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `tlsv1.2` = compatible ESP32 et programme Python

#### Partie 3

|Paramètre|configuration|Explication|
|---|---|---|
|`log_dest`||Chemin de destination des logs|