Newer
Older
Daniel Stenberg
committed
failf(data, "SSL: unable to obtain common name from peer certificate");
X509_free(conn->ssl.server_cert);
return CURLE_SSL_PEER_CERTIFICATE;
}
if (!cert_hostcheck(peer_CN, conn->hostname)) {
Daniel Stenberg
committed
if (data->set.ssl.verifyhost > 1) {
failf(data, "SSL: certificate subject name '%s' does not match "
"target host name '%s'",
peer_CN, conn->hostname);
Daniel Stenberg
committed
X509_free(conn->ssl.server_cert);
return CURLE_SSL_PEER_CERTIFICATE;
}
else
infof(data,
"\t common name: %s (does not match '%s')\n",
peer_CN, conn->hostname);
Daniel Stenberg
committed
}
else
infof(data, "\t common name: %s (matched)\n", peer_CN);
}
str = X509_NAME_oneline (X509_get_issuer_name (conn->ssl.server_cert),
NULL, 0);
if(!str) {
failf(data, "SSL: couldn't get X509-issuer name!");
Daniel Stenberg
committed
X509_free(conn->ssl.server_cert);
Daniel Stenberg
committed
return CURLE_SSL_CONNECT_ERROR;
}
infof(data, "\t issuer: %s\n", str);
CRYPTO_free(str);
/* We could do all sorts of certificate verification stuff here before
deallocating the certificate. */
Daniel Stenberg
committed
if(data->set.ssl.verifypeer) {
data->set.ssl.certverifyresult=SSL_get_verify_result(conn->ssl.handle);
if (data->set.ssl.certverifyresult != X509_V_OK) {
failf(data, "SSL certificate verify result: %d",
Daniel Stenberg
committed
data->set.ssl.certverifyresult);
Daniel Stenberg
committed
retcode = CURLE_SSL_PEER_CERTIFICATE;
}
Daniel Stenberg
committed
data->set.ssl.certverifyresult=0;
X509_free(conn->ssl.server_cert);
/* this is for "-ansi -Wall -pedantic" to stop complaining! (rabe) */
(void) conn;
Daniel Stenberg
committed
return retcode;