33using System . Net ;
44using System . Net . Http ;
55using System . Net . Http . Headers ;
6+ using System . Net . Security ;
67using System . Reflection ;
8+ using System . Security . Cryptography . X509Certificates ;
79using System . Text ;
810using System . Text . RegularExpressions ;
911using Elastic . Apm . Api ;
@@ -105,6 +107,18 @@ private static void ConfigServicePoint(Uri serverUrlBase, IApmLogger logger) =>
105107 servicePoint . ConnectionLimit = 20 ;
106108 } ) ;
107109
110+ private static HttpClientHandler CreateHttpClientHandler ( bool verifyServerCert , IApmLogger logger )
111+ {
112+ bool ServerCertificateCustomValidationCallback ( HttpRequestMessage message , X509Certificate2 certificate , X509Chain chain , SslPolicyErrors policyError )
113+ {
114+ if ( policyError == SslPolicyErrors . None ) return true ;
115+
116+ logger . Trace ( ) ? . Log ( "Certificate validation failed. Policy error {PolicyError}" , policyError ) ;
117+ return ! verifyServerCert ;
118+ }
119+
120+ return new HttpClientHandler { ServerCertificateCustomValidationCallback = ServerCertificateCustomValidationCallback } ;
121+ }
108122
109123 internal static HttpClient BuildHttpClient ( IApmLogger loggerArg , IConfigSnapshot config , Service service , string dbgCallerDesc
110124 , HttpMessageHandler httpMessageHandler = null
@@ -118,7 +132,8 @@ internal static HttpClient BuildHttpClient(IApmLogger loggerArg, IConfigSnapshot
118132 logger . Debug ( )
119133 ? . Log ( "Building HTTP client with BaseAddress: {ApmServerUrl} for {dbgCallerDesc}..."
120134 , serverUrlBase , dbgCallerDesc ) ;
121- var httpClient = new HttpClient ( httpMessageHandler ?? new HttpClientHandler ( ) ) { BaseAddress = serverUrlBase } ;
135+ var httpClient =
136+ new HttpClient ( httpMessageHandler ?? CreateHttpClientHandler ( config . VerifyServerCert , loggerArg ) ) { BaseAddress = serverUrlBase } ;
122137 httpClient . DefaultRequestHeaders . UserAgent . Add (
123138 new ProductInfoHeaderValue ( $ "elasticapm-{ Consts . AgentName } ", AdaptUserAgentValue ( service . Agent . Version ) ) ) ;
124139 httpClient . DefaultRequestHeaders . UserAgent . Add ( new ProductInfoHeaderValue ( "System.Net.Http" ,
0 commit comments