Как получить HTTPS на Arduino?
Проще говоря: есть ли способ получить HTTPS-соединение на Arduino?
Я искал его, и я обнаружил, что это невозможно со стандартной библиотекой и экраном Ethernet, но есть ли у нее специальная библиотека, которая может это сделать?
Как насчет сопроцессора, т. е. как экран WiFi? Кто-нибудь знает, есть ли у Arduino yÃ? N ssl?
6 ответов
MCU, установленные на Arduinos, не имеют мощности для управления соединениями https.
Yún обрабатывает https на стороне Linux , с программным обеспечением, таким как curl, wget или python. Ваш эскиз может просто делегировать задачу стороне Linux.
Несмотря на то, что curl отлично работает, несмотря на предустановку python, вам нужно вручную установить python-openssl, поскольку он недоступен из коробки (из-за ограничений на диске)
Я не думаю, что это возможно из-за размера и сложности библиотеки SSL, потому что Arduino, скорее всего, будет работать под управлением. При этом вы можете сделать запросы на обычный сервер и использовать какой-то скрипт PHP для проксирования запроса на сервер HTTPS. Не уверен, насколько хорошо это сработает.
Вам может быть интересно взглянуть на это .
Я перечисляю это как ответ ради того, чтобы связать это. Это еще не полный https, но он работает над этим, и это может быть выполнимо в будущем http://evothings.com/is- это-возможно, к безопасному-микроконтроллерам-подержанный внутри-ВГД /
вот эталон, который он шифровал сообщение с использованием открытого открытого 1024-го ключа
Arduino UNO 16Mhz AVR ==> 12596 мс * 8504 мс #
Arduino Leonardo 16Mhz AVR ==> 12682 мс * 8563 мс #
Arduino Mega 16Mhz AVR ==> 12596 мс * 8504 мс #
Arduino Due 84Mhz ARM ==> 1032 мс *
Arduino Yún 16Mhz AVR + 400Mhz MIPS ==> 707 мс *
Intel Galileo 400Mhz x86 ==> 192 мс *
Это до тех пор, пока он прошел с ним, но находится в процессе настройки тестового сервера для работы над тем, как он близок к полной реализации ssl /https, которую он может выполнить.
Я на самом деле автор статьи evothings.com - для записи; Arduino UNO более чем способна выполнять TLS. Я только что закончил серию блога в блоге по этой теме. У меня есть рабочий пример Arduino UNO, использующего криптографию эллиптической кривой (sect163r2) для обмена ключом AES-128 для продолжения связи.
http://ardiri.com/blog/utls_defining_lightweight_security_for_iot_part_1 ... http://ardiri.com/blog/utls_defining_lightweight_security_for_iot_part_8
я использовал альтернативный подход к попытке сделать истинное соединение HTTPS, вместо этого он использует те же протоколы под капотом, но для этого использует небезопасный канал связи. почти TLS на HTTP.
Как отмечает Федерико Фиссор, Yún может обрабатывать HTTPS (или SSL, что бы вы ни называли) на стороне Linux из Yún.
Первый способ сделать это - использовать Python с Python OpenSSL. Как вы это делаете, выдает следующие команды через SSH или YunSerialTerminal:
обновление opkg
opkg install python-openssl
opkg update
будет проверять актуальность пакета, а затем opkg install
устанавливает Python OpenSSL. И тогда вы можете поговорить с Arduino, используя Python. Эта страница на веб-сайте Arduino должна помочь вам использовать Python с Arduino.
Вы также можете использовать curl
с опцией -k
в вашем эскизе. Например:
Процесс процесса;
process.runShellCommand ("curl -k http://example.net");
в то время как (p.running ()); //это ждет выполнения команды перед продолжением
Кроме того, если вы хотите загрузить файл, вы можете использовать wget
. Это потребует обновления wget
, снова выдав эти команды через SSH или YunSerialTerminal:
обновление opkg
Обновление opkg wget
И тогда вы можете просто сделать это в своем эскизе:
Процесс процесса;
process.runShellCommand ("wget http://example.net");
в то время как (p.running ()); //это ждет выполнения команды перед продолжением
Использование экрана WiFi может быть решением - оно поддерживает HTTPS.