forked from espressif/esp-idf
Merge branch 'feature/simple_ota_example_enhancements' into 'master'
examples/ota: fix documentation and add some improvements to simple ota example See merge request espressif/esp-idf!17134
This commit is contained in:
@@ -158,4 +158,17 @@ $ python example_test.py build 8070
|
|||||||
Starting HTTPS server at "https://:8070"
|
Starting HTTPS server at "https://:8070"
|
||||||
192.168.10.106 - - [02/Mar/2021 14:32:26] "GET /simple_ota.bin HTTP/1.1" 200 -
|
192.168.10.106 - - [02/Mar/2021 14:32:26] "GET /simple_ota.bin HTTP/1.1" 200 -
|
||||||
```
|
```
|
||||||
* Publish the firmware image on a public server (e.g. github.com) and copy its root certificate to the `server_certs` directory as `ca_cert.pem`. (The certificate can be downloaded using the `s_client` openssl command if the host includes the root certificate in the chain, e.g. `openssl s_client -showcerts -connect github.com:443 </dev/null`)
|
* Publish the firmware image on a public server (e.g. github.com) and copy its root certificate to the `server_certs` directory as `ca_cert.pem`. The certificate can be downloaded using the `s_client` openssl command as shown below:
|
||||||
|
|
||||||
|
```
|
||||||
|
echo "" | openssl s_client -showcerts -connect raw.githubusercontent.com:443 | sed -n "1,/Root/d; /BEGIN/,/END/p" | openssl x509 -outform PEM >ca_cert.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
Please note that URL used here is `raw.githubusercontent.com`. This URL allows raw access to files hosted on github.com repository. Additionally, command above copies last certificate from chain of certs as the CA root cert of server.
|
||||||
|
|
||||||
|
---
|
||||||
|
**NOTE**
|
||||||
|
|
||||||
|
For examples using certificate bundle approach (e.g., `simple_ota_example`), it already has most common root certificates and hence there is no need to add any additional certs.
|
||||||
|
|
||||||
|
---
|
||||||
|
@@ -7,6 +7,14 @@ menu "Example Configuration"
|
|||||||
URL of server which hosts the firmware
|
URL of server which hosts the firmware
|
||||||
image.
|
image.
|
||||||
|
|
||||||
|
config EXAMPLE_USE_CERT_BUNDLE
|
||||||
|
bool "Enable certificate bundle"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable trusted root certificate bundle. This approach allows to have
|
||||||
|
OTA updates functional with any public server without requirement
|
||||||
|
to explicitly add its server certificate.
|
||||||
|
|
||||||
config EXAMPLE_FIRMWARE_UPGRADE_URL_FROM_STDIN
|
config EXAMPLE_FIRMWARE_UPGRADE_URL_FROM_STDIN
|
||||||
bool
|
bool
|
||||||
default y if EXAMPLE_FIRMWARE_UPGRADE_URL = "FROM_STDIN"
|
default y if EXAMPLE_FIRMWARE_UPGRADE_URL = "FROM_STDIN"
|
||||||
|
@@ -16,6 +16,9 @@
|
|||||||
#include "esp_https_ota.h"
|
#include "esp_https_ota.h"
|
||||||
#include "protocol_examples_common.h"
|
#include "protocol_examples_common.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
#ifdef CONFIG_EXAMPLE_USE_CERT_BUNDLE
|
||||||
|
#include "esp_crt_bundle.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "nvs.h"
|
#include "nvs.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
@@ -88,7 +91,11 @@ void simple_ota_example_task(void *pvParameter)
|
|||||||
#endif
|
#endif
|
||||||
esp_http_client_config_t config = {
|
esp_http_client_config_t config = {
|
||||||
.url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL,
|
.url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL,
|
||||||
|
#ifdef CONFIG_EXAMPLE_USE_CERT_BUNDLE
|
||||||
|
.crt_bundle_attach = esp_crt_bundle_attach,
|
||||||
|
#else
|
||||||
.cert_pem = (char *)server_cert_pem_start,
|
.cert_pem = (char *)server_cert_pem_start,
|
||||||
|
#endif /* CONFIG_EXAMPLE_USE_CERT_BUNDLE */
|
||||||
.event_handler = _http_event_handler,
|
.event_handler = _http_event_handler,
|
||||||
.keep_alive_enable = true,
|
.keep_alive_enable = true,
|
||||||
#ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_BIND_IF
|
#ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_BIND_IF
|
||||||
|
@@ -2,3 +2,8 @@
|
|||||||
# partition table layout, with a 4MB flash size
|
# partition table layout, with a 4MB flash size
|
||||||
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
||||||
CONFIG_PARTITION_TABLE_TWO_OTA=y
|
CONFIG_PARTITION_TABLE_TWO_OTA=y
|
||||||
|
|
||||||
|
# Certificate bundle configuration
|
||||||
|
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN=y
|
||||||
|
CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE=y
|
||||||
|
CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE_PATH="server_certs/ca_cert.pem"
|
||||||
|
Reference in New Issue
Block a user