我正在使用 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
。
我的问题是,在 SSL_get_verify_result()
因以上错误。
换句话说,我可以使用这个公钥执行身份验证吗(假设我的服务器以某种方式知道这个公钥)。
谢谢!
最佳答案
您可以相信对等方拥有他提供的证书的私钥,因为他还提供了一个数字签名,该数字签名由 SSL 使用证书中的公钥进行检查。只有私钥的所有者才能这样做。
您是否相信对等方拥有主题 DN 中表达的身份取决于您是否信任颁发者,在自签名证书的情况下就是他自己。
而该身份是否已授权与您的应用程序通信是另一个问题,只有您的应用程序才能回答。
关于ssl - 自签名证书 : Can I trust the client being indeed the owner of the public key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688343/