1. Introduction
ESP-TLS fournit plusieurs méthodes d'authentification telles que : crt_bundle_attach , global_ca_store , CA certificate , etc.
Voici les implémentations de trois des méthodes d'authentification dans le fichier esp_http_client.c .
if (config->crt_bundle_attach != NULL) {
#ifdef CONFIG_MBEDTLS_CERTIFICATE_BUNDLE
esp_transport_ssl_crt_bundle_attach(ssl, config->crt_bundle_attach);
#else //CONFIG_MBEDTLS_CERTIFICATE_BUNDLE
ESP_LOGE(TAG, "use_crt_bundle configured but not enabled in menuconfig: Please enable MBEDTLS_CERTIFICATE_BUNDLE option");
#endif
} else if (config->use_global_ca_store == true) {
esp_transport_ssl_enable_global_ca_store(ssl);
} else if (config->cert_pem) {
if (!config->cert_len) {
esp_transport_ssl_set_cert_data(ssl, config->cert_pem, strlen(config->cert_pem));
} else {
esp_transport_ssl_set_cert_data_der(ssl, config->cert_pem, config->cert_len);
}
}
2. Consignes spécifiques
2.1 crt_bundle_attach
Pour s'authentifier avec le certificat racine x509 personnalisé fourni par l'API du package de certificat ESP x509, les éléments suivants doivent être configurés via menuconfig :
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE:自动构建并附加bundle。
CONFIG_MBEDTLS_DEFAULT_CERTIFICATE_BUNDLE:决定从完整的根列表中包含哪些证书。
CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE_PATH:指定要嵌入到包中的任何其他证书的路径。
2.2 global_ca_store。
Le global_ca_store peut être initialisé et défini en une seule fois.
2.3 Certificat CA (format pem ou der)
L'implémentation spécifique est dans transport_ssl.c
void esp_transport_ssl_set_cert_data(esp_transport_handle_t t, const char *data, int len)
{
GET_SSL_FROM_TRANSPORT_OR_RETURN(ssl, t);
ssl->cfg.cacert_pem_buf = (void *)data;
ssl->cfg.cacert_pem_bytes = len + 1;//(如果是PEM格式,则包括null终止符)
}
void esp_transport_ssl_set_cert_data_der(esp_transport_handle_t t, const char *data, int len)
{
GET_SSL_FROM_TRANSPORT_OR_RETURN(ssl, t);
ssl->cfg.cacert_buf = (void *)data;
ssl->cfg.cacert_bytes = len;
}
En plus des trois méthodes ci-dessus, il existe
psk_hint_key : authentification par clé pré-partagée
ignorer la vérification du serveur : ignorer la vérification
L'exemple officiel utilise l'authentification par certificat CA au format pem et le fichier de certificat est " project\server_certs\ca_cert.pem ".