diff --git a/src/libtls/tls_server.c b/src/libtls/tls_server.c index 687fd0ce2..247b9f636 100644 --- a/src/libtls/tls_server.c +++ b/src/libtls/tls_server.c @@ -729,6 +729,12 @@ static status_t process_certificate(private_tls_server_t *this, DBG1(DBG_TLS, "received TLS peer certificate '%Y'", cert->get_subject(cert)); first = FALSE; + if (this->peer && this->peer->get_type(this->peer) == ID_ANY) + { + this->peer->destroy(this->peer); + this->peer = cert->get_subject(cert); + this->peer = this->peer->clone(this->peer); + } } else {