socket此服务器的证书无效,QsslSocket:不能对其他同行访问端点(客户端)证书(服务器)...

嗨,

我目标是为Server + Client应用程序建立双向身份验证。然而,我有一个奇怪的问题。使用Qt 5.2.0在我的Server + Client应用程序中使用XCA和OpenSSL生成的证书进行测试。

注意:我不使用QSslSocket::ignoreSslErrors()来越过错误。

2情景:

1) 客户端具有有效的clientCA,有效的本地证书(由serverCA,客户端模板)和有效的私有密钥集签名。 服务器有有效的serverCA,有效的本地证书(由clientCA,服务器模板签名)和有效的私钥集。

2) 客户端有有效的客户端CA. 服务器有有效的本地证书(由clientCA,服务器模板签名)和有效的私钥集合。

--------

广告1)

我可以建立安全连接正常,但只有当我设置QSslSocket::peerVerifyMode到VerifyNone在服务器端(自动VerifyPeer在客户端上)。

如果我不这样做,即使套接字被正确评估为服务器端(为此检查SslMode),我也会自动分配VerifyPeer模式。这显然与文档相反,因为它说它应该是自动QueryPeer如果套接字是服务器端。但是,即使将套接字手动设置为QueryPeer也无济于事,握手失败的原因与VerifyPeer相同。

现在我得到的错误是:

QSslError::CertificateSignatureFailed (4) “The signature of the certificate is invalid”

检查对端证书的SSL错误(和/或加密)在服务器上显示,没有证书被对方提出的(在peerCertificate()产生无效证书)所以难怪它会因这个错误而失败。在这种情况下,我无法在客户端获得对等证书。

但即使VerifyNone设置在服务器和加密成功我仍然得到上述错误,由于对等(客户端)不呈现其证书,尽管事实上它不应该首先要求。在这种情况下,我可以在客户端上获得对等(服务器)证书。

--------

广告2)

这是文档风格的场景,应该能够只有一个办法验证(客户端认证服务器)。在这种情况下,默认情况下peerVerifyMode在服务器上再次被选为VerifyPeer。

但是peerVerifyMode对服务器端的握手没有任何影响!即使设置为VerifyPeer,它仍会成功,尽管客户端未提供任何证书。

不管的peerVerifyMode错误的设置出现相同#1加两个新的错误,所以我得到的服务器:

QSslError::CertificateSignatureFailed (4) “The signature of the certificate is invalid”

QSslError::UnableToGetLocalIssuerCertificate (11) “The issuer certificate of a locally looked up certificate could not be found”

QSslError::UnableToVerifyFirstCertificate (12) “No certificates could be verified”

尽管这些SSL握手不管peerVerifyMode成功在服务器端。我在客户端上没有任何错误。这再次违背了文档,明确指出,如果发生任何SSL错误,连接将被丢弃,除非被忽略。

---------------

我不明白,这种行为也不知道怎样去修复它,因为我是相当肯定的证书都ok(使用openssl.exe测试握手验证返回码0(好))成功。在我看来,peerVerifyMode的设置经常被忽略,在某些情况下,错误也会自动忽略。由于它们与服务器端的未发送(或未收到)对等(客户端)证书有关,所以我可以理解,但如果peerVerifyMode设置为VerifyPeer,则不能。

任何人都可以帮忙吗?谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值