Как получить HTTPS на Arduino?

Проще говоря: есть ли способ получить HTTPS-соединение на Arduino?

Я искал его, и я обнаружил, что это невозможно со стандартной библиотекой и экраном Ethernet, но есть ли у нее специальная библиотека, которая может это сделать?

Как насчет сопроцессора, т. е. как экран WiFi? Кто-нибудь знает, есть ли у Arduino yÃ? N ssl?

26 голосов | спросил TheDoctor 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 02:43:08 +0400000000amWed, 12 Feb 2014 02:43:08 +040014 2014, 02:43:08

6 ответов


14

MCU, установленные на Arduinos, не имеют мощности для управления соединениями https.

Yún обрабатывает https на стороне Linux , с программным обеспечением, таким как curl, wget или python. Ваш эскиз может просто делегировать задачу стороне Linux.

Несмотря на то, что curl отлично работает, несмотря на предустановку python, вам нужно вручную установить python-openssl, поскольку он недоступен из коробки (из-за ограничений на диске)

ответил Federico Fissore 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 03:00:44 +0400000000amWed, 12 Feb 2014 03:00:44 +040014 2014, 03:00:44
6

Я не думаю, что это возможно из-за размера и сложности библиотеки SSL, потому что Arduino, скорее всего, будет работать под управлением. При этом вы можете сделать запросы на обычный сервер и использовать какой-то скрипт PHP для проксирования запроса на сервер HTTPS. Не уверен, насколько хорошо это сработает.

Вам может быть интересно взглянуть на это .

ответил JVarhol 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 02:53:10 +0400000000amWed, 12 Feb 2014 02:53:10 +040014 2014, 02:53:10
4

Я перечисляю это как ответ ради того, чтобы связать это. Это еще не полный 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, которую он может выполнить.

ответил Seth M Rainsdon 6 FebruaryEurope/MoscowbFri, 06 Feb 2015 02:18:28 +0300000000amFri, 06 Feb 2015 02:18:28 +030015 2015, 02:18:28
3

Я на самом деле автор статьи 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.

ответил Aaron Ardiri 23 FriEurope/Moscow2016-12-23T17:30:04+03:00Europe/Moscow12bEurope/MoscowFri, 23 Dec 2016 17:30:04 +0300 2016, 17:30:04
2

Как отмечает Федерико Фиссор, 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 ()); //это ждет выполнения команды перед продолжением
ответил hichris123 23 FebruaryEurope/MoscowbSun, 23 Feb 2014 02:25:54 +0400000000amSun, 23 Feb 2014 02:25:54 +040014 2014, 02:25:54
0

Использование экрана WiFi может быть решением - оно поддерживает HTTPS.

https://www.arduino.cc/ru/Reference/WiFi101

ответил tse 2 42017vEurope/Moscow11bEurope/MoscowThu, 02 Nov 2017 16:30:12 +0300 2017, 16:30:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132