Ruslan1 17 2 ноября, 2017 Опубликовано 2 ноября, 2017 · Жалоба Здравствуйте! были похожие темы, но вопросы у меня скорее начального уровня, да и разные, сложно позиционировать в нужную тему. https://electronix.ru/forum/index.php?showtopic=143095 https://electronix.ru/forum/index.php?showtopic=124690 сейчас цель- изменить имеющийся и работающий SMTP для отсылки е-мейлов через SSL/TLS порты в будущем- быть готовым к FTPS и HTTPS. Вроде в программировании не новичок, но никогда не сталкивался с SSL/TLS и с mbedTLS. Пока что непонятно по сертификатам: 1. встроенные в файл "mbedTLS\library\certs.c" сертификаты рабочие ? Или что я делаю не так? у меня: const char mbedtls_test_cas_pem[] = TEST_CA_CRT_RSA TEST_CA_CRT_EC; проверяю командой ret = mbedtls_x509_crt_parse( &cacert, (const unsigned char *) mbedtls_test_cas_pem, mbedtls_test_cas_pem_len ); Получаю ошибку "MBEDTLS_ERR_PK_INVALID_PUBKEY" при парсинге первого сертификата TEST_CA_CRT_RSA (описание ошибки: The pubkey tag or value is invalid (only RSA and EC are supported) проверка второго сертификата (TEST_CA_CRT_EC) проходит без ошибок. собственно, сами сертификаты: #define TEST_CA_CRT_RSA \ "-----BEGIN CERTIFICATE-----\r\n" \ "MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" \ "MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" \ "MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" \ "A1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" \ "CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" \ "mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" \ "50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" \ "YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" \ "R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" \ "KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" \ "gZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH\r\n" \ "/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNV\r\n" \ "BAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVz\r\n" \ "dCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJ\r\n" \ "SsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8H\r\n" \ "DBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkF\r\n" \ "pjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkf\r\n" \ "m/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ\r\n" \ "7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==\r\n" \ "-----END CERTIFICATE-----\r\n" #define TEST_CA_CRT_EC \ "-----BEGIN CERTIFICATE-----\r\n" \ "MIICUjCCAdegAwIBAgIJAMFD4n5iQ8zoMAoGCCqGSM49BAMCMD4xCzAJBgNVBAYT\r\n" \ "Ak5MMREwDwYDVQQKEwhQb2xhclNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBF\r\n" \ "QyBDQTAeFw0xMzA5MjQxNTQ5NDhaFw0yMzA5MjIxNTQ5NDhaMD4xCzAJBgNVBAYT\r\n" \ "Ak5MMREwDwYDVQQKEwhQb2xhclNTTDEcMBoGA1UEAxMTUG9sYXJzc2wgVGVzdCBF\r\n" \ "QyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMPaKzRBN1gvh1b+/Im6KUNLTuBu\r\n" \ "ww5XUzM5WNRStJGVOQsj318XJGJI/BqVKc4sLYfCiFKAr9ZqqyHduNMcbli4yuiy\r\n" \ "aY7zQa0pw7RfdadHb9UZKVVpmlM7ILRmFmAzHqOBoDCBnTAdBgNVHQ4EFgQUnW0g\r\n" \ "JEkBPyvLeLUZvH4kydv7NnwwbgYDVR0jBGcwZYAUnW0gJEkBPyvLeLUZvH4kydv7\r\n" \ "NnyhQqRAMD4xCzAJBgNVBAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEcMBoGA1UE\r\n" \ "AxMTUG9sYXJzc2wgVGVzdCBFQyBDQYIJAMFD4n5iQ8zoMAwGA1UdEwQFMAMBAf8w\r\n" \ "CgYIKoZIzj0EAwIDaQAwZgIxAMO0YnNWKJUAfXgSJtJxexn4ipg+kv4znuR50v56\r\n" \ "t4d0PCu412mUC6Nnd7izvtE2MgIxAP1nnJQjZ8BWukszFQDG48wxCCyci9qpdSMv\r\n" \ "uCjn8pwUOkABXK8Mss90fzCfCEOtIA==\r\n" \ "-----END CERTIFICATE-----\r\n" 2. Хочу читать файлы сертификатов с диска, у меня FatFS. Оказывается, mbedTLS использует в исходниках вызовы fopen, fgets и так далее, а мне нужно вызывать функции из FatFS- f_open и прочие. Мне что, нужно напрямую менять все вызовы в исходниках mbedTLS, или есть какой-то более красивый способ, чтоб при вызове fopen() на самом деле вызывалась моя функция f_open() ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 2 ноября, 2017 Опубликовано 2 ноября, 2017 · Жалоба Мне что, нужно напрямую менять все вызовы в исходниках mbedTLS, или есть какой-то более красивый способ, чтоб при вызове fopen() на самом деле вызывалась моя функция f_open() ? define-обертки не использовали никогда?? Например #define fopen(params...) f_open(params...) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 2 ноября, 2017 Опубликовано 2 ноября, 2017 · Жалоба define-обертки не использовали никогда?? Например #define fopen(params...) f_open(params...) Хм. никогда не переопределял функцию, уже имеющуюся под тем же названием в стандартной либе. (в данном случае <stdio.h>) Спасибо! вроде этот вопрос закрыл. :) Upd: простыми редефайнами на функции FatFS мало где получается все эти fxxx заменить, пришлось свои писать. То есть что-то вроде "#define fopen my_fopen" для большинства вызовов пришлось всунуть. кстати, чем "define xxx yyy" отличается от "define xxx(...) yyy(...)"? показывает компилятору что это функция? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 3 ноября, 2017 Опубликовано 3 ноября, 2017 · Жалоба MBEDTLS_ERR_PK_INVALID_PUBKEY поборол. Ошибка в конфиге была: Пытался использовать сертификат с ключом (2048 бит) длинной больше чем указано в MBEDTLS_MPI_MAX_SIZE (задается в байтах). вызовы у функций работы с файлами в FatFS другие, и форматы данных и ключи другие. Чтоб не множить сущности, переписал вызовы прямо в исходниках mbedTLS, благо их не так уж много. Можно, конечно, и перекодирующую фунцию вставить для адаптации, но она не всегда короткая. Новый вопрос: А насколько нужна и актуальна система отзыва сертификатов (CRL) для ембеддед клиента? что с ней делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
denyslb 0 23 ноября, 2017 Опубликовано 23 ноября, 2017 · Жалоба MBEDTLS_ERR_PK_INVALID_PUBKEY поборол. Ошибка в конфиге была: Пытался использовать сертификат с ключом (2048 бит) длинной больше чем указано в MBEDTLS_MPI_MAX_SIZE (задается в байтах). вызовы у функций работы с файлами в FatFS другие, и форматы данных и ключи другие. Чтоб не множить сущности, переписал вызовы прямо в исходниках mbedTLS, благо их не так уж много. Можно, конечно, и перекодирующую фунцию вставить для адаптации, но она не всегда короткая. Новый вопрос: А насколько нужна и актуальна система отзыва сертификатов (CRL) для ембеддед клиента? что с ней делать? Ну вот к примеру каспер когда начинает перехватывать траффик для проверок на вирусы, CRL перестает работать, хотя может уже и пофиксили. Т.е. они не парились этим вопросом. На случай если сертификат сервера скомпрометировали - оставляет возможность проверить то, не отозван ли он. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться