Dieses Repository enthält Beispiele für DTLs über SCTP und UDP. Jede Anwendung in src kann als Client oder Server verwendet werden.
Unsere Beispiele werden gegen die OpenSSL 1.1.x -API entwickelt.
Verwenden Sie OpenSSL Version 1.1.1a oder höher.
DTLS -Echo -Server und Client
Dieses Beispiel enthält einen Multi-Thread-Echo-Server und Client-Senden von Nachrichten über eine SCTP/UDP-Verbindung, die mit DTLs verschlüsselt ist.
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 -Zeichengeneratorserver und Client
Dieses Beispiel enthält einen Multi-Thread-Zeichengeneratorserver und Client, der über eine SCTP/UDP-Verbindung über eine bestimmte Zeit mit DTLS verschlüsselt wird. Statistiken, wie viele Nachrichten gesendet und empfangen wurden und wie viele verloren gegangen sind, werden am Ende gedruckt.
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 -Server und Client verwerfen
Dieses Beispiel enthält einen Multi-Thread-Verwirrungsserver und Client, der Nachrichten über eine SCTP/UDP-Verbindung sendet, die mit DTLs verschlüsselt ist.
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
Seit FreeBSD 12.0 reicht die integrierte OpenSSL-Version aus, um die UDP-Beispiele auszuführen.
Die SCTP -Beispiele und ältere Versionen von FreeBSD erfordern, dass OpenSSL über pkg oder von Grund auf neu installiert wird.
Für FreeBSD 12.0 und 11.2 ist das OpenSSL 1.1.1 -Paket von pkg openssl111 .
$ pkg install openssl111
Die UDP-Beispiele sollten mit neueren Linux-Verteilungen außerhalb des Boxs funktionieren. Um die SCTP -Beispiele auszuführen, muss OpenSSL mit SCTP -Unterstützung von Grund auf neu erstellt werden.
sudo apt-get install libsctp-dev
$ ./config sctp --prefix=$HOME/my-openssl/
$ make
$ make install
Zusätzlich zu einem geladenen SCTP -Modul benötigt Linux eine SCTP -Auth -Unterstützung.
$ modprobe sctp
$ sysctl -w net.sctp.auth_enable=1
Wenn Sie nur die UDP -Beispiele ausführen möchten, können vorgefertigte OpenSSL -Binärdateien per Brew installiert werden.
$ brew install [email protected]
Eine SCTP -aktivierte OpenSSL -Version muss aus der Quelle zusammengestellt werden, folgen Sie dem Tutorial im Linux -Abschnitt. Da MacOS SCTP nicht außerhalb der Box unterstützt, ist es erforderlich, den SCTP -NKE zu verwenden.
Vor dem Aufrufen von make im src -Verzeichnis müssen möglicherweise eine benutzerdefinierte Bibliothek angegeben und Pfade einbezogen werden . Dies geschieht entweder durch Ändern des Makefile oder durch Bereitstellung des Pfades als Befehlszeilenargument. Es ist auch möglich, nur SCTP- oder UDP -Beispiele zu erstellen.
$ make
$ make sctp # only SCTP examples
$ make udp # only UDP examples
Um die Beispielprogramme auszuführen, sollten sich die erforderlichen Server- und Client -Zertifikate in einem Unterordner certs befinden.
Die folgenden Befehle erstellen signierte Zertifikate für Client und Server der obigen Beispiele.
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
Sie können eine eigene CA.Conf -Datei erstellen oder ein minimales Beispiel verwenden.
Die Beispiele sind nicht darauf beschränkt, miteinander verwendet zu werden, sondern können auch mit der integrierten OpenSSL-Anwendung verwendet werden.
Das folgende Beispiel startet einen SCTP -Echo -Server. Der Client stellt eine Verbindung über s_client -Anwendung von OpenSSL her und sendet die Eingabetaste von stdin an den Server. Der Server echos empfangene Nachrichten.
$ dtls_sctp_echo -V -L 127.0.0.1
$ openssl s_client -sctp -dtls -connect 127.0.0.1:23232