該存儲庫包含通過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