реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32F407: LwIP + SSL -> SMTP
k000858
сообщение Dec 4 2014, 12:26
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Всем привет. Есть девайс на stm32f407 с езернетом на lwip стеке. Требуется сделать e-mail клиент. Как известно, сейчас практически все SMTP серверы перешли на SSL (наверное, правильнее будет сказать "запретили соединения без SSL по 25 порту).
Вопрос: потянет ли вышеозвученный МК софтовое шифрование (ведь крипто-проц есть только у 417 линейки).

Может есть у когонибдь опыт реализации: какую посоветуете реализацию SSL (знаю, что есть как коммерческие так и бесплатные), и где можно надыбать исходники/примеры.
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 4 2014, 12:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(k000858 @ Dec 4 2014, 15:26) *
Вопрос: потянет ли вышеозвученный МК софтовое шифрование (ведь крипто-проц есть только у 417 линейки).

Вопрос некорректный. Потянет любой проц, лишь бы было достаточно памяти и времени на вычисления.
Go to the top of the page
 
+Quote Post
Aner
сообщение Dec 4 2014, 13:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Для этих решений на 4хх SMTP, жрущий озу, в этм плане 427 неплох. Софтовое шифрование потянет без проблем. А SSL по разному решают и 25 порт мало кто пользует, разве что из-за архаичности. eSMTP насклько вам нужно то реально? Также как IPv6. У вас наверняка встроеное решение а не паблик.
Go to the top of the page
 
+Quote Post
k000858
сообщение Dec 5 2014, 05:17
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



нашел в примерах от ST готовую PolarSSL. но она для подключения использует socket, а его можно использовать только при наличии OS.
может можно ее как то завести без использования OS?
Go to the top of the page
 
+Quote Post
Aner
сообщение Dec 5 2014, 09:43
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Используйте RTOS например, все остальное без OS кривота для серии 4xx.
Go to the top of the page
 
+Quote Post
k000858
сообщение Dec 5 2014, 11:47
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(Aner @ Dec 5 2014, 13:43) *
Используйте RTOS например, все остальное без OS кривота для серии 4xx.

а если весь функционал в прошивке реализован без RTOS, дак что теперь все перелопачивать ради SSL?
покурил внутринности PolarSSL и решил переписать сетевую прослойку на Raw API вместо Netcon API + Socket

Если у когонибудь есть подобный опыт, не откажусь от помощи.
так же полезен будет любой пример переделки приложения вида
Код
struct sockaddr_in server_addr;


    if( ( *fd = socket( AF_INET, SOCK_STREAM, IPPROTO_IP ) ) < 0 )
        return( POLARSSL_ERR_NET_SOCKET_FAILED );

    server_addr.sin_family = AF_INET;
    server_addr.sin_port   = net_htons( port );

    if( connect( *fd, (struct sockaddr *) &server_addr,
                 sizeof( server_addr ) ) < 0 )
    {
        close( *fd );
        return( POLARSSL_ERR_NET_CONNECT_FAILED );
    }


на код вида

Код
  struct tcp_pcb* pcb;
  ip_addr_t addr;

  pcb = tcp_new();

  tcp_arg(pcb, s);
  tcp_recv(pcb, *tcp_recv);
  tcp_err(pcb, *tcp_err);
  tcp_poll(pcb, *tcp_poll, POLL_INTERVAL);
  tcp_sent(pcb, *tcp_sent);
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 31 2017, 11:19
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Здравствуйте.

Подниму тему. Вопрос похожий, но надеюсь проще в решении:

Есть LwIP, FreeRTOS, STM32F4.
написан и работает smtp клиент по порту 25 (исходник чужой вот отсюда и даже не мной интегрированная в проект, я с smtp врукопашную раньше дела не имел).

сейчас стейт-машина в указанном исходнике так работает (полностью можно по ссылке исходник на гитхабе глануть):
Код
enum smtp_session_state {
  SMTP_NULL,
  SMTP_HELO,
  SMTP_AUTH_PLAIN,
  SMTP_AUTH_LOGIN_UNAME,
  SMTP_AUTH_LOGIN_PASS,
  SMTP_AUTH_LOGIN,
  SMTP_MAIL,
  SMTP_RCPT,
  SMTP_DATA,
  SMTP_BODY,
  SMTP_QUIT,
  SMTP_CLOSED
};


нужно добавить возможность работы по портам 587 и/или 465.
Как это сделать с наименьшим напряжением рук и головы? на этапе "SMTP_AUTH_" что подсунуть в процесс?

Cобственно, как я понимаю, нужен SSL. и вижу PolarSSL в составе LwIP, это оно?
Какие несколько команд вставить на этапе smtp авторизации чтобы это заработало?

Может быть решение простое и где-то рядом, но не доходит до меня...

Спасибо всем кто откликнется.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 31 2017, 12:30
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



подергал через телнет нужный smtp сервер, говорит следующее на EHLO

порт 587:
Цитата
220 <address> ESMTP Postfix (Ubuntu)
EHLO <address>
250-<address>
250-PIPELINING
250-SIZE 15728640
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN


на 465 вообще не соединяется по телнету. Хотя может и не должен.
Go to the top of the page
 
+Quote Post
psL
сообщение Jan 31 2017, 18:05
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



Цитата(Ruslan1 @ Jan 31 2017, 15:30) *
на 465 вообще не соединяется по телнету. Хотя может и не должен.

и не должен. Обычно 465 - это SMTP через TLS, а 587 - это TLS внутри SMTP, так называемый STARTTLS
Лог можно здесь посмотреть http://www.checktls.com/testsender.html.
Опыта отправки писем из lwIP нет.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 31 2017, 19:13
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Вроде бы начало проясняться что дело темное, явно не два байта переслать.
в моем LwIP - старенький огрызок от polarSSL, сейчас нужно смотреть mbed TLS. В нем есть файлик "ssl_mail_client.c", который вроде бы то что нужно.
Но задачка-то не такая простая, и по пониманию-тестированию, и по ресурсам в МК.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 1 2017, 09:46
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ Jan 31 2017, 21:13) *
Вроде бы начало проясняться что дело темное, явно не два байта переслать.
в моем LwIP - старенький огрызок от polarSSL, сейчас нужно смотреть mbed TLS. В нем есть файлик "ssl_mail_client.c", который вроде бы то что нужно.
Но задачка-то не такая простая, и по пониманию-тестированию, и по ресурсам в МК.

Неск. лет назад реализовывал на LPC1768 SMTP-клиент (поверх своего TCP-стека). Самостоятельно конечно, без чьих-то исходников.
Смотрел тогда тоже в сторону добавления возможности работы через шифрованное соединение. Но тоже понял, что там всё непросто.
И очень мало толковой документации по этому делу - это самое главное! В то время как нешифрованный SMTP разжёван вдоль и поперёк в разных источниках.
Именно это меня тогда и остановило. В результате нашёл достаточно много нешифрованных SMTP-серверов и решил пока отложить эту тему до тех пор когда реально припрёт.
Если нароете хорошее описание SMTP-протокола через защищённое соединение - выкладывайте. Думаю тоже когда-то придётся вернуться к этой теме.

Как я подозреваю: там главное установить и поддерживать шифрованное соединение, а уж протокол SMTP через него - точно такой-же как и через открытое.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Feb 1 2017, 12:45
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(jcxz @ Feb 1 2017, 11:46) *
Если нароете хорошее описание SMTP-протокола через защищённое соединение - выкладывайте. Думаю тоже когда-то придётся вернуться к этой теме.

Да не вопрос. Причем делать точно буду, но вот не знаю когда (пока что у этой задачи статус "critical", то есть: спать мешает, но жить c этим можно).

И да, сейчас безопасный smtp доступ отмирает понемногу. Уже столкнулся с мобильными операторами, которые "587/465 only".
Опять же, в перспективе уже не сильно удивлюсь, если FTP на FTPS менять нужно будет в обозримом будущем, так что от понимания "как это работает" не уйти.
Go to the top of the page
 
+Quote Post
psL
сообщение Feb 1 2017, 14:24
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



можно посмотреть WolfSSL
https://www.wolfssl.com/wolfSSL/Products-wolfssl.html
https://www.wolfssl.com/wolfSSL/Blog/Entrie...h_STARTTLS.html
https://github.com/wolfSSL/wolfssl/blob/mas...client/client.c
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Feb 1 2017, 17:11
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(psL @ Feb 1 2017, 16:24) *
можно посмотреть WolfSSL

Большое спасибо! посмотрю, конечно.

Из того что я предварительно читал про WolfSSL, мне показалось(!может я и не прав), что оно сложнее в подключении и жручее в ресурсах чем mbed TLS.

И при прочих равных лицензия тоже аргумент- WolfSSL это GPLv2 , а mbed TLS это еще и Apache 2.0. Этот Апач, как я понял гораздо либеральней и разрешает мне не открывать мой финальный код при использовании их исходников. Понимаю, что мало кто на соблюдении лицензий зацикливается, но при прочих равных могу позволить себе роскошь побыть честным человеком sm.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th August 2025 - 21:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016