如何正确使用POCO C ++库中的OpenSSL

时间:2012-06-04 03:12:54

标签: c++ https openssl poco-libraries

根据POCO助手的规范:

  

初始化NetSSL库以及底层的OpenSSL   库,通过调用Poco :: Crypto :: OpenSSLInitializer :: initialize()。   应该在使用NetSSL库中的任何类之前调用​​。   NetSSL将自动初始化   Poco :: Crypto :: OpenSSLInitializer实例或类似机制   创建Context或SSLManager实例时。   但是,建议调用initializeSSL()   无论如何在应用程序启动时。

当我想使用HTTPSClientSession时,我是否必须先构建一个Application对象? 我如何在客户端中使用它?任何人都可以告诉我吗?非常感谢你!

2 个答案:

答案 0 :(得分:10)

我们以Net / samples / httpget为例,让我们将httpget /复制为新的httpsget目录:

  1. 打开Makefile,将“PocoNetSSL”添加到target_libs
  2. 将'HTTPClientSession'替换为'HTTPSClientSession'
  3. 您需要为SSL使用创建Poco :: Net :: Context
  4. 替换'HTTPClientSession会话(uri.getHost(),uri.getPort());'以下两行:
  5. const Context::Ptr context = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_NONE, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
    HTTPSClientSession session(uri.getHost(), uri.getPort(), context);

    摘要:

    1. 将PocoNetSSL添加为lib_depends
    2. 使用Poco :: Net :: Context与HTTPSClientSession

答案 1 :(得分:4)

不,您不需要Application对象。这是一个功能齐全的例子:

return new BufferedReader(new InputStreamReader(System.in)).lines();

代码:

$ httpsget https://httpbin.org/user-agent
{
  "user-agent": "Poco HTTPSClientSession"
}