Wincrypt и libReSSL Од SSL до TLS - GoTo RetroCode

Всушност е прилично лесно да напишете клиент HTTP/1. Ако можете да направите без одлики како што се прокси или да бидете живи, едноставно отворате порта, испраќате GET линија и празна линија, почекајте одговор, прочитајте го заглавието до празната линија и зад тоа стојат податоците за преземање.

wincrypt

Само глупаво е што денес скоро сè се пренесува во криптирана форма преку HTTPS, т.е. преку тунел SSL/TLS.

и не е толку лесно да се спроведеш себе си. Потребна ви е помош за тоа.

За среќа, сега има некои библиотеки што можат да ве ослободат од криптирање. Но, во комерцијалните проекти се сака да се сретне со барањето да не се користи копилефт код со отворен извор.

Под Windows, тогаш можете да се мешате со Windows Crypto API.
И ако е дозволен POSIX ОС, јас секогаш користам libReSSL, уредна вилушка на постариот проект OpenSSL.

Само за потсетување:
Сè започна со насловот „Безбеден приклучен слој“, скратено SSL, од кои имаше верзија 1 и 2 кои беа брзо отфрлени затоа што во него се појавија несигурности. SSL 3 траеше долго и кратко потоа дојде SSL 3.1, кој беше преименуван во TLS (Security Layer Security) 1.0.
Технологијата потоа се прошири и прошири под името TLS, а во 2018 година беше постигната најновата состојба со TLS 1.3.
Безбедносните проблеми со SSL 3, кои исто така беа препознаени во последниве години, резултираа во SSL 3 деактивирање на сите сервери денес и практично ништо под TLS 1.2 не се користи денес.

WinCrypt

Досадната работа во врска со Crypto-API е неговиот генерички пристап, што всушност би било одлично само ако е подобро документирано. Така, ми требаше засекогаш за конечно да дознаам како да ги имплементирам SSL/TLS врските над нив.

Ова е мојот начин за едноставни SSL клиенти накратко:

OpenSSL и libReSSL

OpenSSL API, кој е достапен и во libReSSL, овозможува директно користење на приклучоци, но оваа варијанта не ми се допаѓа затоа што немате под комуникациски слој и не може да се интегрира во постоечки управувачи на комуникација.

Затоа, тргнувам по патот преку мемориски мемориски проток на податоци. Слојот SSL/TLS ги чита и запишува вашите податоци во овие тампони, а потоа можеме да ги пренесеме на посакуваниот слој за комуникација (на пример, TCP/IP).

Овој метод е особено корисен при спроведување на асинхрона комуникација.
И работи вака:

Заклучок

Phew, мојата неодамнешна SSL API екскурзија речиси стана малку упатство. Се разбира, сè уште недостасува многу на предметот „Насочена употреба на сертификати“. Но, ако ве интересира само криптирање, а не автентикација на врската, можете да напишете мал клиент со него.