如何获取有关客户端证书的信息
How to get information about the client certificate?
我试图解决这个问题超过一天甚至一个星期。我请求你至少给我一个主意或解决办法。请不要给我链接的文件,我已经学会了它的心。现在的问题是:
QSslSocket * server = new QSslSocket();
server->setPrivateKey("my.key");
server->setLocalCertificate("my.crt");
server->startServerEncryption();
if(server->waitForEncrypted()) {
...
}
在本例中,我使用了一个const密钥和证书。我希望收到客户端证书的信息,并根据连接的不同密钥和证书进行安装。
例如,客户端使用相同的证书,我使用与此证书对应的密钥。
我试图使用对等证书()的方法,但返回无效。
如何获取客户端使用的证书信息?也许有办法拿到这张证书。怎么做呢?
在TLS协议中,服务器在客户端之前提供它的证书/身份,因此没有(标准的)方法来根据客户端证书选择提供哪个服务器证书。一旦客户端提供了它的身份,服务器证书就已经被锁定了。
我能想到的唯一的TLS扩展,你可以使用/滥用你正在谈论的是SNI,它会让客户端请求自己选择的主机名(即客户端a请求cert_a.myserver.com的响应,客户端B请求cert_b.myserver.com等)之前,服务器呈现其证书,所以服务器可以使用该信息来选择证书呈现。
在OpenSSL中实现SNI不是一项微不足道的任务,但是有一些示例和stackoverflow问题可以查看以获得帮助。
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- OpenSSL TLS服务器-使用客户端证书白名单
- 打开 SSL 查询客户端证书
- 为什么 gRPC C++ 客户端在没有显式服务器的 SSL 证书的情况下无法工作,就像在示例中一样?
- 使用 WinInet 的客户端身份验证(证书 + 私钥)
- 证书验证在客户端服务器通信中使用boost :: asio和openssl失败
- 由于SSL3_GET_CLIENT_CERTIFICATE:未返回证书,验证 SSL 客户端真实性失败
- 如何在 OpenSSL 中使用 SSL 证书与 gsoap,使用 C++ 客户端/服务器
- Microsoft HTTP 服务器 API - 使用 SSL,如何要求客户端证书
- 什么是客户端证书,从哪里获取它,如何使用它连接到服务器?
- 使用WCF和gSOAP向服务器和客户端添加证书
- OpenSSL:服务器无法验证客户端证书
- OpenSSL客户端未发送客户端证书
- 如何使用boost::asio SSL验证客户端证书
- 验证SSL_get_peer_certificate返回的服务器证书的客户端程序
- 创建临时客户端证书(包括私钥)
- 在QWebSockets客户端检查SSL证书有效性的最佳实践
- 如何获取有关客户端证书的信息
- 使用OPENSSL(使用证书)进行客户端-服务器通信
- 将SSL客户端证书与IXMLHTTPRequest3一起使用