自签名证书:我是否可以信任客户端确实是公钥的所有者



我正在玩OpenSSL,在我的服务器代码中,我有以下内容:

rc = SSL_get_verify_result(ssl);
printf("SSL_get_verify_result(): %in", rc);
cert = SSL_get_peer_certificate(ssl);
printf("SSL_get_peer_certificate(): %pn", cert);
pkey = X509_get_pubkey(cert);
printf("X509_get_pubkey(): %pn", pkey);

SSL_get_verify_result()返回预期的X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN

我的问题是,我是否可以相信客户端实际上是我在上述错误失败后使用X509_get_pubkey()获得的 SSL_get_verify_result() 公钥的所有者。

换句话说,我是否可以使用此公钥执行身份验证(假设我的服务器以某种方式知道此公钥)。

谢谢!

您可以信任对等方拥有他提供的证书的私钥,因为他还提供了数字签名,该签名由 SSL 使用证书中的公钥进行检查。只有私钥的所有者才能做到这一点。

您是否信任对等方拥有主题 DN 中表示的身份取决于您是否信任颁发者,在自签名证书的情况下,颁发者是他自己。

该身份是否被授权与您的应用程序通信是另一个问题,只有您的应用程序才能回答。

最新更新