ที่เก็บนี้มีตัวอย่างสำหรับ DTL ผ่าน SCTP และ UDP แต่ละแอปพลิเคชันใน src สามารถใช้เป็นไคลเอนต์หรือเซิร์ฟเวอร์
ตัวอย่างของเราได้รับการพัฒนากับ OpenSSL 1.1.x API
ใช้ OpenSSL เวอร์ชัน 1.1.1a หรือสูงกว่า
DTLS Echo Server และไคลเอนต์
ตัวอย่างนี้มีเซิร์ฟเวอร์ 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
ตัวอย่างนี้รวมถึงเซิร์ฟเวอร์ตัวสร้างอักขระแบบมัลติเธรดและไคลเอนต์ที่ส่งข้อความให้มากที่สุดเท่าที่จะเป็นไปได้ซึ่งกันและกันผ่านการเชื่อมต่อ SCTP/UDP ที่เข้ารหัสด้วย DTLs ในเวลาที่กำหนด สถิติจำนวนข้อความที่ส่งและรับจำนวนเท่าใดและมีการพิมพ์หายไปกี่ข้อความในตอนท้าย
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 แบบมัลติเธรดและการส่งข้อความไคลเอนต์ผ่านการเชื่อมต่อ SCTP/UDP ที่เข้ารหัสด้วย 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
เนื่องจาก 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 เท่านั้นสามารถติดตั้ง Binaries Prebuilt OpenSSL ผ่าน Brew ได้
$ brew install [email protected]
ต้องรวบรวมเวอร์ชัน OpenSSL ที่เปิดใช้งาน SCTP จากแหล่งที่มาให้ทำตามการสอนในส่วน Linux เนื่องจาก 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