Этот репозиторий содержит примеры для DTL через SCTP и UDP. Каждое приложение в src может использоваться в качестве клиента или сервера.
Наши примеры разработаны против API OpenSSL 1.1.x.
Используйте openssl версию 1.1.1a или выше.
DTLS ECHO Server и Client
Этот пример включает в себя многопоточный сервер ECHO и клиент, отправляющий сообщения, через соединение SCTP/UDP, зашифрованное с помощью DTLS.
Usage: dtls_(udp|sctp)_echo [options] [address]
Options:
-l message length (default: 100 Bytes)
-L local address
-p port (default: 23232)
-n number of messages to send (default: 5)
-v verbose
-V very verbose
DTLS Сервер генератора символов и клиент DTLS
Этот образец включает в себя многопоточный сервер генератора символов и клиент, отправляющий как можно больше сообщений друг другу через соединение SCTP/UDP, зашифрованное с помощью DTL в течение определенного времени. Статистика Сколько сообщений было отправлено и получено и сколько потеряно, напечатаны в конце.
Usage: dtls_(udp|sctp)_chargen [options] [address]
Options
-l message length (default: 100 Bytes)
-L local address
-s streams (default: 5, sctp only)
-p port (default: 23232)
-t time to send (default: 10 sec)
-u unordered (sctp only)
-v verbose
-V very verbose
DTLS Discard Server и Client
Этот образец включает в себя многопоточный сервер сброса и отправку сообщений клиента через соединение SCTP/UDP, зашифрованное с помощью DTL.
Usage: dtls_(udp|sctp)_discard [options] [address]
Options:
-l message length (Default: 100 Bytes)
-L local address
-s streams (default: 5, sctp only)
-p port (default: 23232)
-t time to send (Default: 10 sec)
-u unordered (sctp only)
-v verbose
-V very verbose
Поскольку FreeBSD 12.0, встроенной версии OpenSSL достаточно для запуска примеров UDP.
Примеры SCTP и более старые версии FreeBSD требуют, чтобы OpenSSL был установлен через pkg или с нуля.
Для FreeBSD 12.0 и 11.2 пакет OpenSSL 1.1.1 от pkg - openssl111 .
$ pkg install openssl111
Примеры UDP должны работать с недавними распределениями Linux вне коробки. Чтобы запустить примеры SCTP, OpenSSL должен быть построен с нуля с поддержкой SCTP.
sudo apt-get install libsctp-dev
$ ./config sctp --prefix=$HOME/my-openssl/
$ make
$ make install
В дополнение к загруженному модулю SCTP, Linux требует поддержки SCTP Auth.
$ modprobe sctp
$ sysctl -w net.sctp.auth_enable=1
Если вы хотите запустить только примеры UDP, построенные двоичные файлы OpenSSL могут быть установлены через Brew.
$ brew install [email protected]
Следуйте учебному пособию в разделе Linux, включенной в SCTP -версию OpenSSL. Поскольку MacOS не поддерживает SCTP из коробки, необходимо использовать SCTP NKE.
Перед make в каталоге src может потребоваться указание пользовательской библиотеки и включить пути. Это делается либо путем изменения Makefile , либо путем предоставления пути в качестве аргумента командной строки. Также возможно построить только примеры SCTP или UDP.
$ make
$ make sctp # only SCTP examples
$ make udp # only UDP examples
Чтобы запустить примеры программ, необходимые сертификаты сервера и клиента должны быть расположены в подпапке certs .
Следующие команды создают подписанные сертификаты для клиента и сервера приведенных выше образцов.
touch ca-db-index
echo 01 > ca-db-serial
# Certificate Authority
openssl req -nodes -x509 -newkey rsa:2048 -days 365 -keyout ca-key.pem -out ca-cert.pem
# Server Certificate
openssl req -nodes -new -newkey rsa:2048 -keyout server-key.pem -out server.csr
# Sign Server Certificate
openssl ca -config ca.conf -days 365 -in server.csr -out server-cert.pem
# Client Certificate
openssl req -nodes -new -newkey rsa:2048 -keyout client-key.pem -out client.csr
# Sign Client Certificate
openssl ca -config ca.conf -days 365 -in client.csr -out client-cert.pem
Вы можете создать свой собственный файл ca.conf или использовать минимальный образец.
Примеры не ограничены для использования друг с другом, они также могут использоваться со встроенным приложением OpenSSL.
Пример ниже запускается сервер SCTP ECHO. Клиент подключается через приложение s_client от openssl и отправляет ввод чтения с stdin на сервер. Сервер Echos получил сообщения.
$ dtls_sctp_echo -V -L 127.0.0.1
$ openssl s_client -sctp -dtls -connect 127.0.0.1:23232