我正在尝试从boost :: asio运行SSL示例,当我运行它时,我得到一个“无效参数”异常 . 我在Linux x86_64上 .
http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/example/ssl/client.cpp
http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/example/ssl/server.cpp
编译:
g++ server.cpp -o server -lboost_system -lssl
g++ client.cpp -o client -lboost_system -lssl
运行如下:
$ ./server
Usage: server <port>
$ ./server 10000
Exception: Invalid argument
$ ./server 1000
Exception: Permission denied
$ sudo ./server 1000
Exception: Invalid argument
不确定是什么问题:(任何帮助将不胜感激 .
谢谢!
2 回答
好的,对于将来发现这一点的人,您需要创建证书并对其进行适当的签名 . 以下是linux的命令:
//生成私钥
//生成证书签名请求
//使用私钥签名证书
//删除密码要求(例如需要)
//生成dhparam文件
完成后,您需要更改server.cpp和client.cpp中的文件名 .
server.cpp
client.cpp
那应该都行不通!
使用strace再次执行测试以查看哪个系统调用获得了
EINVAL
,作为安全上下文设置失败的一部分,除非您拥有示例中的正确文件和数据:您收到
EPERM
因为您尝试绑定到特权TCP端口(其值小于1024) . 这就是./server 10000
没有EPERM
的原因 .