How to use OpenSSL in POCO C++ library correctly

mac.ma picture mac.ma · Jun 4, 2012 · Viewed 15.9k times · Source

According to the Specification in POCO assistant:

Initialize the NetSSL library, as well as the underlying OpenSSL libraries, by calling Poco::Crypto::OpenSSLInitializer::initialize(). Should be called before using any class from the NetSSL library. The NetSSL will be initialized automatically, through Poco::Crypto::OpenSSLInitializer instances or similar mechanisms when creating Context or SSLManager instances. However, it is recommended to call initializeSSL() in any case at application startup.

When I want to use HTTPSClientSession,do I have to construct an Application object first? How can I use it in Client? Any guy can tell me ?Thank you very much!

Answer

clsung picture clsung · Oct 2, 2012

Let's take Net/samples/httpget as an example, let's copy httpget/ as a new httpsget directory:

  1. open Makefile, add "PocoNetSSL" to target_libs
  2. replace 'HTTPClientSession' with 'HTTPSClientSession'
  3. you need to create Poco::Net::Context for SSL use
  4. replace 'HTTPClientSession session(uri.getHost(), uri.getPort());' with following two lines:
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);

Summary:

  1. add PocoNetSSL as a lib_depends
  2. use Poco::Net::Context with HTTPSClientSession