如何在测试时忽略Microsoft.Azure.Kusto.Data的SSL证书验证错误?
解决ADX连接时的SSL证书名称不匹配验证错误(测试环境专用)
使用Microsoft.Azure.Kusto.Data包连接ADX时,若遇到The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch证书验证错误,测试阶段可通过以下两种方式忽略SSL错误(生产环境严禁使用):
方法一:设置全局证书验证回调
在应用启动阶段添加全局回调,仅忽略证书名称不匹配的错误:
// .NET Framework/.NET Core 3.1及以下版本适用 ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => { // 仅测试环境启用,生产环境必须删除此代码 if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch) { return true; } // 其他SSL错误保持默认验证逻辑 return sslPolicyErrors == SslPolicyErrors.None; };
方法二:配置自定义HttpClient传入Kusto客户端
若使用较新版本的Kusto SDK,可通过KustoConnectionStringBuilder传入自定义配置的HttpClient,实现证书验证跳过:
var connectionString = "your_adx_connection_string"; var builder = new KustoConnectionStringBuilder(connectionString); // 创建自定义HttpClientHandler,忽略证书名称不匹配错误 var handler = new HttpClientHandler { ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return sslPolicyErrors == SslPolicyErrors.None || sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch; } }; var httpClient = new HttpClient(handler); // 传入自定义HttpClient创建查询提供者 var provider = KustoClientFactory.CreateCslQueryProvider(builder.WithHttpClient(httpClient)); var reader = await provider.ExecuteQueryAsync("database", "query");
重要提醒:以上两种方法仅用于测试环境调试,生产环境必须确保SSL证书验证正常,否则会导致数据传输安全风险。
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

