- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个客户端-服务器应用程序,客户端是用 c++ 和 QT 编写的,服务器是用 java 编写的,但是我真的很难尝试让 ssl 加密工作。
我认为该过程在握手级别失败。我很难弄清楚为什么它不起作用的原因是,即使过程失败,客户端或服务器也没有报告任何错误。我在 QT 中使用客户端的休闲方式:
this->_uCertificate.fromPath(_DC::DEFAULT_CERT_MAIN_PATH + _DC::DEFAULT_MAIN_CERT_FILE);
this->_socket->addCaCertificate(this->_uCertificate);
//begin connection
this->_socket->connectToHostEncrypted(this->_uServerAdress, this->_uServerPort);
//wait until connection has completed
if(!this->_socket->waitForConnected(_CM::TIMEOUT))
{
this->_lastError = this->_socket->errorString();
return false;
}
//wait for handshake
if ( !this->_socket->waitForEncrypted(_CM::TIMEOUT) ) {
this->_lastError = this->_socket->errorString(); //the error is "No Error"
//return false;
}
调用“waitForEncrypted”时失败。该函数返回 false,因此进程失败,但错误字符串为“No Error”。我还添加了一个插槽来处理来自套接字的错误信号,但它从未被调用过。在服务器端我使用:
SSLSocket _sock = (SSLSocket) this._ssocket.accept();
_sock.startHandshake();
........................................
if(this._inputBuffered.read(this._messageBuffer) < 0)
throw new Exception("Error while reading from client");
再次没有抛出异常,但它在读取命令时失败。但是在服务器端,我不确定如果连接/握手失败是否会抛出异常,或者我应该以某种方式手动检查错误。
我曾经在客户端遇到一个问题,当我收到通用名称与主机不匹配的错误时,所以至少我知道连接在某种程度上是有效的。在我修复证书以包含正确的通用名称后,我收到了这个不存在的错误。有谁知道为什么它会以这种方式失败,或者至少有更好的调试方法?
编辑 我已尝试使用 openSSL 进行连接并且它有效。握手成功,我可以从服务器发送和接收数据包。所以问题似乎出在客户端。
最佳答案
我从文件加载证书的方式似乎有问题。 “fromPath”方法显然实际上并没有从文件中加载证书,而是返回了证书列表。如果我将这个列表添加到我的套接字中,它就会正常工作。我有点良心不安,我没有正确阅读文档。
编辑 它失败但仍然没有信号错误的原因是因为我的套接字没有有效证书。当我调用 this->_uCertificate.fromPath(..) 时,该方法返回在该路径中找到的证书列表,但对象本身未被修改。它仍然是一个无效的空证书。所以当我在我的套接字中添加那个空证书时,唯一的一个,当它到达握手时,它没有有效的操作证书。此时它失败了,但没有抛出任何错误。
但是,当 .fromPath() 方法返回的对象被添加到套接字时,握手将照常进行,因为现在它具有有效且非空的证书。
关于java - QSslSocket问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5204652/
在 Windows 7 Ultimate x64 上的 Qt 4.8 中,当我尝试使用 QNetworkAccessManager 通过网络进行 post() 操作时: _net_acc_mgr.po
我正在使用 Qt Creator 4.2.0 运行 Qt 5.7.1(MSVC 2015,32 位)。 QSslSocket 有问题。我收到以下错误: qt.network.ssl: QSslSock
我在 debian wheezy 中使用 Qt 5.4.1 中的 QSslSocket 创建了一个 sslclient 和 sslserver。当我运行程序时,它们根本不工作。调试我的代码后,我看到它
在我的项目中,我需要使用特定版本的 OpenSSL。我同时使用 Qt 4.8.6 和 Qt 5.4.0。我想创建一个自定义 QSslSocket 以传递给 QNetworkAccessManager,
我正在尝试用 Qt 编写一个简单的客户端-服务器应用程序,该应用程序将通过 SSL 进行通信。我尝试使用 QSslSockets,但我一直遇到各种问题。 看看这个: 客户: #define dumpv
我有一个客户端程序和一个服务器程序,它们使用 QSslSockets 进行通信。在服务器程序中,如果客户端成功连接,我将发送一个字符串 "Snameadded",我还想向它发送服务器上的用户列表,但作
这是我编写的同步 TCP 客户端中 read() 语句上方的一小段代码。 std::cout bytesAvailable() waitForReadyRead(); std::cou
我有一个使用QTcpSocket 的客户端-服务器应用程序。现在我想改用加密的 SSL 连接,因此我尝试切换到 QSslSocket。但是我无法与服务器建立连接。这是客户端的代码: Connectio
我正在尝试使用 Qt 文档中的示例代码实现 SSL 服务器。 但是在 serverSocket->startServerEncryption(); 被调用之后,什么也没有发生——无论是 encrypt
是否可以创建一个新的 QSslSocket 并让它获得现有 TCP 连接的所有权,并丢弃旧的 QTcpSocket,而不中断或关闭 TCP 连接? 我需要它在我的 FTP 服务器中实现显式 FTPS,
我使用此代码通过套接字传输大文件内存使用量没有峰值: connect(socket, SIGNAL(bytesWritten(qint64)), this, SLOT(refillSocket
我真的很困惑,希望有人知道我的问题。 我有一个非常简单的 SSL 客户端和服务器。连接很好。沟通很好。当客户端与服务器断开连接时,就会出现问题。这会在服务器上触发一个信号,该信号在 SLOT erro
我对 wkhtmltopdf 有疑问。我在我的 docker 中使用了这样的 wkhtmltopdf。 wkhtmltopdf https://www.google.com google.pdf 然后
我正在编写代理服务器,http 部分已准备就绪,但 https 有问题。我以这种方式创建了一个证书和私钥(据我所知,没有它是行不通的): OpenSSL> req-x509-newkey rsa: 2
我正在尝试通过 SSL 连接到 Twitch 聊天服务器,我基本上复制并粘贴了 QT 中安全 SSL 连接示例中的一些代码。当我可以 connectToHostEncrypted 时,一切都崩溃了。非
我们的业务应用程序基于 Qt 的生产服务器出现问题。当 SSL 连接总数随时间增加时,一些客户端根本无法连接。 QSslSocket::waitForEncrypted() 开始失败,没有 QSslE
需要创建一个使用 SSL 连接到客户端的小型服务器应用程序。一次只能连接一个客户端。 每次客户端尝试建立新连接时,都会调用以下函数: void Control::on_newConnection()
我有一个应用程序作为代理使用 QTcpSocket 拦截 HTTP 请求。我正在尝试将其扩展为也适用于 HTTPS,但它似乎并没有像我预期的那样工作。由于应用程序的独特性,我无法使用 QHttp。 目
我正在 Windows 上开发一个应连接到服务器的应用程序。因此我实现了一个 QSslSocket。 执行连接方法后,sslSocket errorString 发送 The issuer certi
有一个定义 QT_NO_SSL ,如果没有找到 Ssl 库,则定义。还有方法 QSslSocket::supportsSsl() . 但这两者有什么关系,它们是等价的吗?是否QT_NO_SSL QS
我是一名优秀的程序员,十分优秀!