该存储库包含通过SCTP和UDP的DTL示例。 src中的每个应用程序都可以用作客户端或服务器。
我们的示例是针对OpenSSL 1.1.x API开发的。
使用OpenSSL版本1.1.1a或更高版本。
DTLS回声服务器和客户端
该示例包括一个多线程ECHO服务器和客户端,该服务器通过使用DTL加密的SCTP/UDP连接发送消息。
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字符生成器服务器和客户端
该示例包括一个多线程字符生成器服务器和客户端,在给定的时间内,通过使用DTL加密的SCTP/UDP连接向彼此发送尽可能多的消息。统计数据在最后打印了多少消息,并收到了多少丢失。
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丢弃服务器和客户端
该示例包括一个多线程丢弃服务器和客户端,通过使用DTL加密的SCTP/UDP连接发送消息。
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需要通过pkg或从头开始安装OpenSSL。
对于FreeBSD 12.0和11.2, pkg的OpenSSL 1.1.1包是openssl111 。
$ pkg install openssl111
UDP示例应与最新的Linux发行版一起使用。为了运行SCTP示例,必须在SCTP支持下从头开始构建OpenSSL。
sudo apt-get install libsctp-dev
$ ./config sctp --prefix=$HOME/my-openssl/
$ make
$ make install
除了加载的SCTP模块外,Linux还需要SCTP验证支持。
$ modprobe sctp
$ sysctl -w net.sctp.auth_enable=1
如果您只想运行UDP示例,则可以通过Brew安装预构建的OpenSSL二进制文件。
$ brew install [email protected]
启用SCTP的OPENSL版本必须从源中编译,请按照Linux部分中的教程进行编译。由于MACOS不支持SCTP开箱即用,因此必须使用SCTP NKE。
在src目录中调用make之前,可能有必要指定自定义库并包括路径。这是通过修改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服务器。客户端通过OPENSL的s_client应用程序连接,并将输入从stdin发送到服务器。服务器回声接收到消息。
$ dtls_sctp_echo -V -L 127.0.0.1
$ openssl s_client -sctp -dtls -connect 127.0.0.1:23232