我想编写一个使用 OpenSSL 的应用程序,以利用它对 SCTP 的 DTLS 支持。我正在使用 Ubuntu 13.10。
我已经下载并成功编译了 LKSCTP 1.0.15 和 OpenSSL 1.0.1e。我用 ./config sctp 编译了 OpenSSL。
我可以编译 http://sctp.fh-muenster.de/ 上提供的示例,但是当我尝试执行其中任何一个时,它们在下面的断言中失败。错误信息是:
bss_dgram.c(897): OpenSSL internal error, assertion failed: ret > 0
setsockopt 遇到的错误是“Permission denied”。这是函数 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 block 。显然,它们在 Linux 中默认是关闭的:
sysctl -w net.sctp.auth_enable = 1
您可以通过添加 net.sctp.auth_enable = 1 使设置永久化
到 /etc/sysctl.conf
。
请在此处查看 README 的底部: https://github.com/jtt/sctp-tools
关于c++ - 使用 OpenSSL 的 SCTP 上的 DTLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068706/