Ce référentiel contient des exemples pour les DTL via SCTP et UDP. Chaque application de src peut être utilisée comme client ou serveur.
Nos exemples sont développés contre l'API OpenSSL 1.1.x.
Utilisez OpenSSL Version 1.1.1A ou plus.
DTLS Echo Server and Client
Cet échantillon comprend un serveur d'écho et un client multiplié et un client envoyant des messages sur une connexion SCTP / UDP cryptée avec 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
Serveur de générateur de caractères DTLS et client
Cet échantillon comprend un serveur de générateurs de caractères multiples et un client envoyant autant de messages que possible sur une connexion SCTP / UDP cryptée avec DTLS pendant un temps donné. Statistiques combien de messages ont été envoyés et reçus et combien de personnes ont été pertes sont imprimées à la fin.
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 rejette le serveur et le client
Cet échantillon comprend un serveur de rejet multi-thread et un client envoyant des messages sur une connexion SCTP / UDP cryptée avec DTLS.
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
Depuis FreeBSD 12.0, la version OpenSSL intégrée est suffisante pour exécuter les exemples UDP.
Les exemples SCTP et les anciennes versions de FreeBSD nécessitent l'OpenSSL pour être installée via pkg ou à partir de zéro.
Pour FreeBSD 12.0 et 11.2, le package OpenSSL 1.1.1 de pkg est openssl111 .
$ pkg install openssl111
Les exemples UDP devraient fonctionner avec les distributions Linux récentes prêtes à l'emploi. Pour exécuter les exemples SCTP, OpenSSL doit être construit à partir de zéro avec le support SCTP.
sudo apt-get install libsctp-dev
$ ./config sctp --prefix=$HOME/my-openssl/
$ make
$ make install
En plus d'un module SCTP chargé, Linux nécessite une prise en charge de l'authentification SCTP.
$ modprobe sctp
$ sysctl -w net.sctp.auth_enable=1
Si vous souhaitez uniquement exécuter les exemples UDP, les binaires OpenSSL pré-construits peuvent être installés via Brew.
$ brew install [email protected]
Une version OpenSSL activée SCTP doit être compilée à partir de Source, suivez le tutoriel dans la section Linux. Étant donné que MacOS ne prend pas en charge SCTP hors de la boîte, il est nécessaire d'utiliser le SCTP NKE.
Avant d'appeler make dans le répertoire src , il peut être nécessaire de spécifier la bibliothèque personnalisée et d'inclure des chemins. Cela se fait soit en modifiant le makefile , soit en fournissant le chemin en tant qu'argument de ligne de commande. Il est également possible de créer uniquement des exemples SCTP ou UDP.
$ make
$ make sctp # only SCTP examples
$ make udp # only UDP examples
Afin d'exécuter les exemples de programmes, les certificats de serveur et client requis doivent être situés dans un sous-dossier certs .
Les commandes suivantes créent des certificats signés pour le client et le serveur des échantillons ci-dessus.
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
Vous pouvez créer votre propre fichier CA.conf ou utiliser un échantillon minimal.
Les exemples ne sont pas limités pour être utilisés entre eux, ils peuvent également être utilisés avec l'application OpenSSL intégrée.
L'exemple ci-dessous démarre un serveur Echo SCTP. Le client se connecte via l'application s_client d'OpenSSL et envoie la lecture d'entrée de stdin au serveur. Le serveur Echos a reçu des messages.
$ dtls_sctp_echo -V -L 127.0.0.1
$ openssl s_client -sctp -dtls -connect 127.0.0.1:23232