To answer my own question later, I was able to edit the POCO code to allow me to specifiy a "Both" context. That is I updated the code I initially posted to be like:
void Context::createSSLContext()
{
if (SSLManager::isFIPSEnabled())
{
_pSSLContext = SSL_CTX_new(TLSv1_method());
}
else
{
switch (_usage)
{
case CLIENT_USE:
_pSSLContext = SSL_CTX_new(SSLv23_client_method());
break;
case SERVER_USE:
_pSSLContext = SSL_CTX_new(SSLv23_server_method());
break;
case BOTH_USE:
_pSSLContext = SSL_CTX_new(SSLv23_method());
break;
case TLSV1_CLIENT_USE:
_pSSLContext = SSL_CTX_new(TLSv1_client_method());
break;
case TLSV1_SERVER_USE:
_pSSLContext = SSL_CTX_new(TLSv1_server_method());
break;
case TLSV1_BOTH_USE:
_pSSLContext = SSL_CTX_new(TLSv1_method());
break;
default:
throw Poco::InvalidArgumentException("Invalid usage");
}
}
if (!_pSSLContext)
{
unsigned long err = ERR_get_error();
throw SSLException("Cannot create SSL_CTX object", ERR_error_string(err, 0));
}
SSL_CTX_set_default_passwd_cb(_pSSLContext, &SSLManager::privateKeyPassphraseCallback);
Utility::clearErrorStack();
SSL_CTX_set_options(_pSSLContext, SSL_OP_ALL);
}
Modifying the code like this allowed my application to act as both an HTTPS server and client. If anybody is in the same boat I was I hope this puts your mind at ease.