Я работаю с приложением (TDAmeritrade), которое использует OAuth2 для доступа к API. После входа в систему через веб-портал он перенаправляет меня на https://localhost/?code=XXXX. Мне нужно получить код «XXXX» для дальнейших вызовов API. Я использую Qt для настройки https-сервера на локальном хосте, но до сих пор он отключается при установлении связи TLS без явной ошибки. Я использую Firefox в Linux с самозаверяющими сертификатами.
Мой код в настоящее время очень похож на файл примера sslechoserver.cpp из QT, но я удалил посылки. Я не считаю, что мои сертификаты являются проблемой, так как у меня есть самозаверяющие сертификаты для моего маршрутизатора pfSense для успешного включения https, и я использовал тот же процесс для настройки этих новых сертификатов. Ниже приведен код для настройки класса.
mWebSocketServer = new QWebSocketServer(QStringLiteral("https://localhost"),
QWebSocketServer::SecureMode, this);
QFile certFile("/home/dave/Downloads/sabre.Local.crt");
QFile keyFile("/home/dave/Downloads/sabre.Local.key");
if(!certFile.open(QIODevice::ReadOnly) || !keyFile.open(QIODevice::ReadOnly)) {
qDebug() << __FUNCTION__ << ":Unable to open Cert/Key Files";
}
QSslConfiguration sslConfig;
QSslCertificate certificate(&certFile, QSsl::Pem);
QSslKey sslKey(&keyFile, QSsl::Rsa, QSsl::Pem);
certFile.close();
keyFile.close();
sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone);
sslConfig.setLocalCertificate(certificate);
sslConfig.setPrivateKey(sslKey);
sslConfig.setProtocol(QSsl::TlsV1SslV3);
mWebSocketServer->setSslConfiguration(sslConfig);
if(mWebSocketServer->listen(QHostAddress::Any, 443)) {
qDebug() << __FUNCTION__ << ":SSL Echo Server listening on port" << 443;
connect(mWebSocketServer, &QWebSocketServer::newConnection, this,
&O2ReplyServerSSL::onNewConnection);
connect(mWebSocketServer, &QWebSocketServer::sslErrors, this,
&O2ReplyServerSSL::onSslErrors);
connect(mWebSocketServer, &QWebSocketServer::serverError, this,
&O2ReplyServerSSL::onServerError);
connect(mWebSocketServer, &QWebSocketServer::acceptError, this,
&O2ReplyServerSSL::onAccecptError);
} else {
qDebug() << __FUNCTION__ << ":Server Unable to Listen";
}
Я ожидал ввести метод onNewConnection, когда зайду в firefox и введу https://localhost в адресную строку. Здесь время ожидания для рукопожатия TLS. Я никогда не вхожу в функции, которые я связал с какой-либо ошибкой или новым соединением. Я не получаю никаких файловых ошибок или ошибок, связанных с привязкой к порту 443.