Embedded device laboratories

Разрабатываем программное обеспечение для Wi-Fi чипов и модулей ESP32 по требованиям заказчика

Пример «SSL/TLS» клиент-сервера для ПЭВМ

Начиная разработку защищенных «SSL/TLS» клиент-серверных приложений для модулей «ESP32-WROVER». Очень часто требуется реализация одной из частей или клиента или сервера на персональном компьютере. Если данная тема абсолютно незнакома, то первое, что приходит в голову это обратиться к официальной документации «MSDN» и реализовать собственное приложение на основе существующих примеров от «Microsoft». К сожалению, описание в «MSDN» далеко не всегда является исчерпывающим, к тому же в нем могут встречаться досадные ошибки и опечатки.

Пример реализации защищенного «SSL/TLS» клиента и сервера доступен в разделе «MSDN» «Docs/.NET/.NET API Browser/System.Net.Security/SslStream». Код сервера остаётся без изменений, а вот код клиента необходимо модифицировать для получения рабочего примера.

Первая модификация заключается в изменении оригинального метода «ValidateServerCertificate» с

на

В новом методе улучшается критерий проверки сертификатов на подлинность, что поможет избежать частых ошибок при соединении с сервером.

Второй модификации требует конструктор класса «TcpClient». В нем необходимо изменить порт, к которому клиент пытается подключиться, с «445» на «8080» (соответствующий из примера для серверной части).

Теперь на основе модифицированного кода необходимо создать консольные проекты в «Visual Studio» и скомпилировать серверную и клиентскую части программы.

Следующий момент, который следует учесть и о котором не говориться в «MSDN», это необходимость создания сертификата «SSL/TLS». Выполняется это следующим образом: находим программу «makecert.exe». В разных версиях «Windows» её расположение может немного различаться, поэтому воспользуйтесь функцией поиска в проводнике. Для «Windows 8.1» она находиться здесь: «C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64». Если же система её не находит, то это тот случай, когда необходимо установить соответствующий «SDK» от «Microsoft». В интернете много ссылок о том, как это сделать.

После того как «makecert» будет найдена, необходимо перейти в директорию где она находится и выполнить её со следующими параметрами, через программу терминала:

«makecert -r -pe -n “CN=SslServer” -ss my -sr currentuser -sky exchange -sp “Microsoft RSA SChannel Cryptographic Provider” -sy 12 server.cer».

В результате в этой же директории появиться файл «server.cer», который и является сгенерированным нами сертификатом.

Теперь запускаем полученные нами программы с нижеприведенными параметрами.

Если клиентская и серверная часть запускаются на одной машине, то необходимо открыть два экземпляра программы терминала, и в каждой из них перейти в соответствующую директорию с исполняемым файлом. Один для клиента, а один для сервера и выполнить следующие команды (соответственно):

«<server_program_name>.exe server.cer»

и

«<client_program_name>.exe localhost SslServer»

В результате вы увидите лог сообщений клиента и сервера о происходящих событиях и сможете его подробно изучить.