首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >运行boost asio ssl示例时出现异常

运行boost asio ssl示例时出现异常
EN

Stack Overflow用户
提问于 2011-06-23 18:43:16
回答 3查看 16.2K关注 0票数 20

我试图运行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

不确定问题是什么:(任何帮助都将不胜感激。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-07 06:22:41

好的,对于将来发现这一点的任何人,您需要创建您的证书并对其进行适当的签名。以下是linux的命令:

//生成私钥

openssl genrsa -des3 -out server.key 1024

//生成证书签名请求

openssl req -new -key server.key -out server.csr

//使用私钥签名证书

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

//删除密码要求(例如需要)

cp server.key server.key.secure
openssl rsa -in server.key.secure -out server.key

//生成dhparam文件

openssl dhparam -out dh512.pem 512

完成此操作后,您需要更改server.cpp和client.cpp中的文件名。

server.cpp

context_.use_certificate_chain_file("server.crt"); 
context_.use_private_key_file("server.key", boost::asio::ssl::context::pem);
context_.use_tmp_dh_file("dh512.pem");

client.cpp

ctx.load_verify_file("server.crt");

那么它应该都可以工作了!

票数 48
EN

Stack Overflow用户

发布于 2011-10-29 13:03:43

使用strace再次执行测试,看看哪个syscall获得了EINVAL,作为额外的奖励,您将看到失败调用的args。这可能是安全上下文设置失败的一部分,除非您拥有来自示例的正确文件和数据:

context_.use_certificate_chain_file("server.pem");
context_.use_private_key_file("server.pem", boost::asio::ssl::context::pem);
context_.use_tmp_dh_file("dh512.pem");

您之所以获得EPERM,是因为您试图绑定到特权TCP端口(值小于1024的端口)。这就是为什么./server 10000没有得到EPERM

票数 3
EN

Stack Overflow用户

发布于 2021-04-21 16:05:03

当遵循@Shootfast的回答时,出现错误:“错误的SSL配置: use_certificate_chain_file: ee密钥太小”。

更改第一行:

openssl genrsa -des3 -out server.key 1024

至:

openssl genrsa -des3 -out server.key 2048

帮我修好了。

在那之后,我得到了错误:‘错误的SSL配置: use_private_key_file:没有开始行’这里解释了这个问题的原因和解决方案:solution (这或多或少是@Shootfast answer最后一个命令的原因)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6452756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档