Fix usage of explicit server name when different from connection host

This commit is contained in:
Marc-André Moreau
2023-06-12 11:00:04 -04:00
parent 89bbed83db
commit 4d4dcd4511
4 changed files with 10 additions and 3 deletions

View File

@@ -326,7 +326,7 @@ BOOL rdp_client_connect(rdpRdp* rdp)
settings->EncryptionMethods = ENCRYPTION_METHOD_FIPS;
}
const char* hostname = freerdp_settings_get_server_name(settings);
const char* hostname = settings->ServerHostname;
if (!hostname)
{
WLog_ERR(TAG, "Missing hostname, can not connect to NULL target");

View File

@@ -283,6 +283,7 @@ static BOOL transport_default_connect_tls(rdpTransport* transport)
transport->layer = TRANSPORT_LAYER_TLS;
tls->hostname = settings->ServerHostname;
tls->serverName = settings->UserSpecifiedServerName;
tls->port = settings->ServerPort;
if (tls->port == 0)

View File

@@ -599,6 +599,11 @@ static rdpCertificate* tls_get_certificate(rdpTls* tls, BOOL peer)
return cert;
}
static const char* tls_get_server_name(rdpTls* tls)
{
return tls->serverName ? tls->serverName : tls->hostname;
}
#define TLS_SERVER_END_POINT "tls-server-end-point:"
static SecPkgContext_Bindings* tls_get_channel_bindings(const rdpCertificate* cert)
@@ -832,7 +837,7 @@ TlsHandshakeResult freerdp_tls_connect_ex(rdpTls* tls, BIO* underlying, const SS
return 0;
#if !defined(OPENSSL_NO_TLSEXT) && !defined(LIBRESSL_VERSION_NUMBER)
SSL_set_tlsext_host_name(tls->ssl, tls->hostname);
SSL_set_tlsext_host_name(tls->ssl, tls_get_server_name(tls));
#endif
return freerdp_tls_handshake(tls);
@@ -882,7 +887,7 @@ TlsHandshakeResult freerdp_tls_handshake(rdpTls* tls)
if (tls->isClientMode)
{
verify_status = tls_verify_certificate(tls, cert, tls->hostname, tls->port);
verify_status = tls_verify_certificate(tls, cert, tls_get_server_name(tls), tls->port);
if (verify_status < 1)
{

View File

@@ -76,6 +76,7 @@ struct rdp_tls
rdpCertificateStore* certificate_store;
BIO* underlying;
const char* hostname;
const char* serverName;
int port;
int alertLevel;
int alertDescription;