Repositori ini berisi contoh untuk DTL melalui SCTP dan UDP. Setiap aplikasi di src dapat digunakan sebagai klien atau server.
Contoh kami dikembangkan terhadap OpenSSL 1.1.x API.
Gunakan OpenSSL Versi 1.1.1a atau lebih tinggi.
DTLS Echo Server dan Klien
Sampel ini mencakup server gema multi-threaded dan klien yang mengirim pesan melalui koneksi SCTP/UDP yang dienkripsi dengan DTL.
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
Server dan klien generator karakter DTLS
Sampel ini mencakup server generator karakter multi-threaded dan klien yang mengirim pesan sebanyak mungkin satu sama lain melalui koneksi SCTP/UDP yang dienkripsi dengan DTL untuk waktu tertentu. Statistik berapa banyak pesan yang telah dikirim dan diterima dan berapa banyak yang hilang dicetak pada akhirnya.
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 membuang server dan klien
Sampel ini mencakup server buang multi-threaded dan klien mengirim pesan melalui koneksi SCTP/UDP dienkripsi dengan 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
Karena FreeBSD 12.0, versi OpenSSL bawaan cukup untuk menjalankan contoh UDP.
Contoh SCTP dan versi FreeBSD yang lebih lama mengharuskan OpenSSL dipasang melalui pkg atau dari awal.
Untuk FreeBSD 12.0 dan 11.2, paket OpenSSL 1.1.1 dari pkg adalah openssl111 .
$ pkg install openssl111
Contoh UDP harus bekerja dengan distribusi Linux terbaru di luar kotak. Untuk menjalankan contoh SCTP, OpenSSL harus dibangun dari awal dengan dukungan SCTP.
sudo apt-get install libsctp-dev
$ ./config sctp --prefix=$HOME/my-openssl/
$ make
$ make install
Selain modul SCTP yang dimuat, Linux membutuhkan dukungan auth SCTP.
$ modprobe sctp
$ sysctl -w net.sctp.auth_enable=1
Jika Anda hanya ingin menjalankan contoh UDP, binari OpenSSL Prebuilt dapat dipasang melalui minuman.
$ brew install [email protected]
Versi OpenSSL yang diaktifkan SCTP harus dikompilasi dari sumber, ikuti tutorial di bagian Linux. Karena MacOS tidak mendukung SCTP di luar kotak, perlu menggunakan SCTP NKE.
Sebelum memanggil make di direktori src , mungkin perlu untuk menentukan perpustakaan khusus dan menyertakan jalur. Ini dilakukan dengan memodifikasi Makefile atau dengan menyediakan jalur sebagai argumen baris perintah. Dimungkinkan juga untuk hanya membangun contoh SCTP atau UDP.
$ make
$ make sctp # only SCTP examples
$ make udp # only UDP examples
Untuk menjalankan contoh program, sertifikat server dan klien yang diperlukan harus ditempatkan di subfolder certs .
Perintah berikut membuat sertifikat yang ditandatangani untuk klien dan server sampel di atas.
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
Anda dapat membuat file ca.conf Anda sendiri atau menggunakan sampel minimal.
Contohnya tidak terbatas untuk digunakan satu sama lain, mereka juga dapat digunakan dengan aplikasi OpenSSL bawaan.
Contoh di bawah ini memulai server Echo SCTP. Klien terhubung melalui aplikasi s_client OpenSSL dan mengirim input baca dari stdin ke server. Echos server menerima pesan.
$ dtls_sctp_echo -V -L 127.0.0.1
$ openssl s_client -sctp -dtls -connect 127.0.0.1:23232