# ESP-MQTT SSL Sample application (mutual authentication) (See the README.md file in the upper level 'examples' directory for more information about examples.) This example connects to the broker test.mosquitto.org using ssl transport with client certificate and as a demonstration subscribes/unsubscribes and send a message on certain topic. It uses ESP-MQTT library which implements mqtt client to connect to mqtt broker. ## How to use example ### Hardware Required This example can be executed on any ESP32 board, the only required interface is WiFi and connection to internet. ### Configure the project * Run `make menuconfig` (or `idf.py menuconfig` if using CMake build system) * Configure Wi-Fi or Ethernet under "Example Connection Configuration" menu. See "Establishing Wi-Fi or Ethernet Connection" section in [examples/protocols/README.md](../../README.md) for more details. * When using Make build system, set `Default serial port` under `Serial flasher config`. * Generate your client keys and certificate Navigate to the main directory ``` cd main ``` Generate a client key and a CSR. When you are generating the CSR, do not use the default values. At a minimum, the CSR must include the Country, Organisation and Common Name fields. ``` openssl genrsa -out client.key openssl req -out client.csr -key client.key -new ``` Paste the generated CSR in the [Mosquitto test certificate signer](https://test.mosquitto.org/ssl/index.php), click Submit and copy the downloaded `client.crt` in the `main` directory. Please note, that the supplied files `client.crt` and `client.key` in the `main` directory are only placeholders for your client certificate and key (i.e. the example "as is" would compile but would not connect to the broker) ### Build and Flash Build the project and flash it to the board, then run monitor tool to view serial output: ``` make -j4 flash monitor ``` (To exit the serial monitor, type ``Ctrl-]``.) See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects. ## Example Output ``` I (3714) event: sta ip: 192.168.0.139, mask: 255.255.255.0, gw: 192.168.0.2 I (3714) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE I (3964) MQTT_CLIENT: Sending MQTT CONNECT message, type: 1, id: 0000 I (4164) MQTTS_EXAMPLE: MQTT_EVENT_CONNECTED I (4174) MQTTS_EXAMPLE: sent publish successful, msg_id=41464 I (4174) MQTTS_EXAMPLE: sent subscribe successful, msg_id=17886 I (4174) MQTTS_EXAMPLE: sent subscribe successful, msg_id=42970 I (4184) MQTTS_EXAMPLE: sent unsubscribe successful, msg_id=50241 I (4314) MQTTS_EXAMPLE: MQTT_EVENT_PUBLISHED, msg_id=41464 I (4484) MQTTS_EXAMPLE: MQTT_EVENT_SUBSCRIBED, msg_id=17886 I (4484) MQTTS_EXAMPLE: sent publish successful, msg_id=0 I (4684) MQTTS_EXAMPLE: MQTT_EVENT_SUBSCRIBED, msg_id=42970 I (4684) MQTTS_EXAMPLE: sent publish successful, msg_id=0 I (4884) MQTT_CLIENT: deliver_publish, message_length_read=19, message_length=19 I (4884) MQTTS_EXAMPLE: MQTT_EVENT_DATA TOPIC=/topic/qos0 DATA=data I (5194) MQTT_CLIENT: deliver_publish, message_length_read=19, message_length=19 I (5194) MQTTS_EXAMPLE: MQTT_EVENT_DATA TOPIC=/topic/qos0 DATA=data ```