이 저장소에는 SCTP 및 UDP를 통한 DTL에 대한 예제가 포함되어 있습니다. src 의 각 응용 프로그램은 클라이언트 또는 서버로 사용할 수 있습니다.
우리의 예는 OpenSSL 1.1.x API에 대해 개발되었습니다.
OpenSSL 버전 1.1.1A 이상을 사용하십시오.
DTLS Echo 서버 및 클라이언트
이 샘플에는 다중 스레드 Echo 서버와 DTLS로 암호화 된 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 서버 및 클라이언트 폐기
이 샘플에는 DTLS로 암호화 된 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 예제를 실행하려면 OpenSSL을 SCTP 지원으로 처음부터 구축해야합니다.
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 예제 만 실행하려면 사전 빌드 OpenSSL Binaries를 Brew를 통해 설치할 수 있습니다.
$ brew install [email protected]
SCTP 활성화 된 OpenSSL 버전은 소스에서 컴파일되어야합니다. 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 서버를 시작합니다. 클라이언트는 OpenSSL의 s_client 응용 프로그램을 통해 연결하고 stdin 에서 서버로 입력을 읽습니다. 서버 에코는 메시지를 받았습니다.
$ dtls_sctp_echo -V -L 127.0.0.1
$ openssl s_client -sctp -dtls -connect 127.0.0.1:23232