自签名证书:我可以相信客户确实是公钥的所有者吗?

时间:2014-02-10 21:29:58

标签: ssl openssl ssl-certificate

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

rc = SSL_get_verify_result(ssl);
printf("SSL_get_verify_result(): %i\n", rc);

cert = SSL_get_peer_certificate(ssl);
printf("SSL_get_peer_certificate(): %p\n", cert);

pkey = X509_get_pubkey(cert);
printf("X509_get_pubkey(): %p\n", pkey);

SSL_get_verify_result()会返回预期的X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

您是否相信对方拥有主题DN中表达的身份归结为您是否信任发行人,在自签名证书的情况下,他是自己。

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