Виж темите без отговор | Виж активните теми
Дата и час: Чет Мар 28, 2024 12:54 pm
|
Страница 1 от 1
|
[ 14 мнения ] |
|
Автор |
Съобщение |
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
openSSL
как да разбера колко байта имам приети? SSL_pending(...) ми връща постоянно 0 а ги има като го прескоча чете ама ми трябват колко има налични за четене
_________________ main[-1u]={1};
|
Вто Юни 25, 2019 6:10 pm |
|
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 5:52 pm Мнения: 10356 Местоположение: Добрич
|
Re: openSSL
|
Вто Юни 25, 2019 6:20 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
аз минах през много такива постове ( знам че SSL_pending() връща колко остават от текущия read ) аз питам без SSL_read() има ли начин
_________________ main[-1u]={1};
|
Вто Юни 25, 2019 6:32 pm |
|
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 5:52 pm Мнения: 10356 Местоположение: Добрич
|
Re: openSSL
във втория отговор обясняваха,че може да видиш хендъла. Но това си зависи от конкретната платформа. Не си казал на какво го ползваш.
|
Вто Юни 25, 2019 6:55 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
в момента Windows после Linux/Mac... то разлика мноо нема абе правя ... нема са хилиш ... Windows(в смисъл PC) като Arduino ... ClientSecured библиотеката то повече за симулации и за обучение - без платка ... реално сорса трябва да работи и на платка ако спазвам "закона"
_________________ main[-1u]={1};
|
Вто Юни 25, 2019 7:01 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
ей нящо такова като на шота Arduino base core принтва в конзолата и на Ком Портовете TCP-то е готово, ся са тормозя със SSL-ла .... int ClientSecured::available() сигурно и peek()
компилира до EXE на компа
_________________ main[-1u]={1};
|
Вто Юни 25, 2019 7:11 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
"тъпо", но работи
_________________ main[-1u]={1};
|
Сря Юни 26, 2019 7:45 am |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
какво трябва да означава device_cert и private_key са верни: openssl s_client -connect akc28iu7dn5ra-ats.iot.us-east-2.amazonaws.com:8883 -cert dev-certificate.pem -key dev-private.pemказва бла бла... :SSL handshake has read 5400 bytes and written 1619 bytes Verification: OK
_________________ main[-1u]={1};
|
Чет Юни 27, 2019 2:59 pm |
|
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 5:52 pm Мнения: 10356 Местоположение: Добрич
|
Re: openSSL
оpenssl ми е ревал така, когато сертификата не е за целта която искаш. В случая обаче щом от конзола работи значи не е от това.
По-скоро виж дефаулт настройките. Когато го викаш в конзола примерно -certform по дефаулт е РЕМ и затова ти работи без да си го казал. Не е ясно като викаш като библиотека какво подаваш и какво е дефаулт. Виж и за кий формата, докъде да проверява чейна със сертификати и т.н.
|
Чет Юни 27, 2019 4:07 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
баси - то няма нищо интересно... връзка до Amazon - CA_LIST не се ползва - само клиент церт и привате, бай дефол чиперите са всички гърми на хенд-шека (до гугъл и ажур бачка ама те са само с CA) | | | | Код: int ClientSecure::ssl_begin(const char *host, uint32_t port, int vrf) { int rc; if (_connected) // allready return -1; if (ssl_connect_socket(&client, host, port) < 0) return -1;
client.ctx = SSL_CTX_new(SSLv23_method()); // TLSv1_2_method client.ssl = SSL_new(client.ctx);
#if 0 // SSL_trace static BIO *outbio = BIO_new_fp(stdout, BIO_NOCLOSE); SSL_set_msg_callback(client.ssl, msg_cb); SSL_set_msg_callback_arg(client.ssl, outbio); #endif
//CA_LIST if (client.ca_cert) { rc = SSL_CTX_load_verify_locations(client.ctx, client.ca_cert, 0); if (0 == rc) { DEBUG_SSL("[ERROR] CA_LIST: %d\n", rc); return -1; } DEBUG_SSL("[SSL] USE CA_LIST\n"); }
//CLENT CERTIFICATE if (client.certificate) { if (SSL_CTX_use_certificate_file(client.ctx, client.certificate, SSL_FILETYPE_PEM) <= 0) { ERR_print_errors_fp(stderr); return -1; } DEBUG_SSL("[SSL] USE CERTIFICATE\n"); }
//CLENT PRIVATE KEY if (client.private_key) { if (SSL_CTX_use_PrivateKey_file(client.ctx, client.private_key, SSL_FILETYPE_PEM) <= 0) { ERR_print_errors_fp(stderr); return -1; } DEBUG_SSL("[SSL] USE PRIVATE KEY\n"); }
if (client.private_key) { if (!SSL_CTX_check_private_key(client.ctx)) {
ERR_print_errors_fp(stderr); return -1; } DEBUG_SSL("[SSL] PRIVATE KEY IS OK\n"); }
//CIPHERS if (client.ciphers) SSL_set_cipher_list(client.ssl, client.ciphers);
//SNI if (client.sni_host_name) SSL_set_tlsext_host_name(client.ssl, client.sni_host_name);
//SSL_set_verify(client.ssl, SSL_VERIFY_PEER, NULL); //SSL_CTX_set_verify_depth(client.ssl, 1);
//ATTACH SOCKET if (SSL_set_fd(client.ssl, client.sock) <= 0) { DEBUG_SSL("[ERROR] SSL_set_fd()\n"); return -1; } //HANDSHAKE if (SSL_connect(client.ssl) <= 0) { DEBUG_SSL("[ERROR] SSL_connect()\n"); ERR_print_errors_fp(stderr); return -1; }
if (vrf && SSL_get_verify_result(client.ssl) != X509_V_OK) { ERR_print_errors_fp(stderr); return -1; }
//DEBUG_SSL("[SSL] Started\n"); return 0; }
| | | | |
_________________ main[-1u]={1};
|
Чет Юни 27, 2019 5:38 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
намерих проблема ( утре ще оправя гита ) докато зареждам SSL_CTX_use_ .... сертификатите в контекста SSL_CTX *ctx SSL *ssl не трябва да е създаден... преместих го след зареждането на цертификатите и са конектна mqtt в Amazon (само с client-cert / client-private-key, без ca_file ) client.ssl = SSL_new(client.ctx); то май имаше алиас SSL_use_ .... ма утре ще пробвам че ми писна
_________________ main[-1u]={1};
|
Пет Юни 28, 2019 6:38 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
воаля
_________________ main[-1u]={1};
|
Пет Юни 28, 2019 6:46 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
начи тоя дето е заложил .available() и .peek() в основата на класовете е голям джендер търся "елегантно" решение как да видя колко байта има приети или пииик на първия приет... SSL_peek() работи "странно" на WIN работи на LIN не с една "педя" обяснения защо не... накратко ако няма прието и декодирано функцията блокира и чака супер тъпо я разблокирах ама не ми изглежда добре макар че работи като за Ардуино Идеи?
_________________ main[-1u]={1};
|
Пет Авг 30, 2019 7:47 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: openSSL
намерих си един бъг в сетването на SO_RCVTIMEO и беше голям таймаута setsockopt(client.sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&interval, sizeof(struct timeval));
преди сокет connect() таймаута е ~10 sec и след handshake го сменям на 10 mSec да не "блокират" SSL_read() и SSL_peek()
_________________ main[-1u]={1};
|
Съб Авг 31, 2019 5:30 pm |
|
|
|
Страница 1 от 1
|
[ 14 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: ToHu и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|