当前位置: 首页 > 面试题库 >

异常运行Boost Asio SSL示例

孟海
2023-03-14
问题内容

我试图从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

不知道是什么问题:(任何帮助将不胜感激。

谢谢!


问题答案:

好的,对于将来发现此问题的任何人,您都需要创建证书并进行适当的签名。这是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");

然后,它应该一切正常!



 类似资料:
  • 我想我在文档上遵循了非常多的步骤,但我仍然遇到了这个异常。(唯一的不同是我从Eclipse J2EE运行它,但我不会期望这真的很重要,不是吗?) 代码:(这不是我写的,它来自梁项目示例)。我认为您必须指定一个google云平台项目,并提供访问该项目的正确凭据。然而,在这个示例项目中,我没有找到进行设置的地方。 例外情况:

  • 当我尝试用命令从终端运行sikuli时 java-jar sikuli-setup.jar

  • 声明运行时异常的方法的指导原则是什么? 假设我调用一个抛出的第三方例程。该例程能够抛出而不声明它这样做是否允许/标准/可接受? 和往常一样,我对我的问题引起的困惑感到惊讶:-D这可能是因为我很困惑。 在下面的代码中,可调用的是一个lambda,它发出一个,这会抛出SQLException。callable.call抛出Exception。 我由此推测,程序员希望抛出一个SQLException。然

  • login.fxml: 它是在Eclipse中使用JRE 1.8.0而不是IntelliJ思想 这是一个错误:

  • 问题内容: 运行单元测试时,我遇到了jar hell的问题。 我遇到了上述错误,并通过删除了不必要的jar文件解决了这些错误。 但是我面临以下两个jar的问题,即tomcat-embed-core-8.0.36.jar和hibernate- jpa-2.1-api-1.0.0.Final.jar。这两者之间有一个共同的类,我需要两个jar文件,任何人都可以向我解释如何解决此问题。我都需要jar文件