.NET Core应用中Nest Client绕过SSL证书验证错误的技术求助
解决Elasticsearch SSL证书验证失败的问题
我帮你搞定这个SSL证书验证的报错——这是因为你的Elasticsearch使用的是不被本地系统信任的SSL证书(比如自签名证书),.NET默认会严格校验证书有效性,所以抛出了这个异常。你只需要给Elasticsearch客户端添加自定义的HttpMessageHandler,跳过证书验证即可,修改后的完整代码如下:
var uris = new[] { new Uri("https://10.8.173.179:9200"), }; var connectionPool = new SniffingConnectionPool(uris); // 创建自定义HttpHandler,禁用SSL证书验证 var httpHandler = new HttpClientHandler { ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true }; var settings = new ConnectionConfiguration(connectionPool, httpHandler); settings.BasicAuthentication("elastic", "password"); var lowlevelClient = new ElasticLowLevelClient(settings); var health = lowlevelClient.Cluster.Health<StringResponse>();
重要提醒:
ServerCertificateCustomValidationCallback返回true意味着无论证书是否合法,都会直接信任,这会跳过所有SSL证书校验逻辑。- 这个方法只适合开发/测试环境!生产环境绝对不能这么做,必须使用由可信CA颁发的正规SSL证书,否则会带来严重的安全风险。
如果之后你切换到NEST的高等级客户端(ElasticClient),配置方式完全一致,只需要把ElasticLowLevelClient替换成ElasticClient就行。
内容的提问来源于stack exchange,提问作者sumeet
相关产品推荐
相关产品推荐

