我想编写一个使用OpenSSL的应用程序,以利用它对SCTP的DTLS支持。我使用的是Ubuntu 13.10。
我已经下载并成功编译了LKSCTP 1.0.15和OpenSSL 1.0.1e。我用编译了OpenSSL/配置sctp。
我可以编译上提供的样本http://sctp.fh-muenster.de/,但是,当我尝试执行其中任何一个时,它们都会在下面的断言中失败。错误消息为:
bss_dgram.c(897): OpenSSL internal error, assertion failed: ret > 0
setsockopt遇到的错误是"权限被拒绝"。以下是函数BIO_new_dgram_sctp(来自bss_dgram.c)中失败的代码
ret = setsockopt(fd, IPPROTO_SCTP, SCTP_AUTH_CHUNK, &auth, sizeof(struct sctp_authchunk));
OPENSSL_assert(ret >= 0);
您需要在sysctl中启用AUTH块。显然,它们在Linux中默认关闭:
sysctl -w net.sctp.auth_enable = 1
通过将net.sctp.auth_enable = 1
添加到/etc/sysctl.conf
,可以使设置永久化。
请在此处查看自述文件的底部:https://github.com/jtt/sctp-tools