ssl - Elasticsearch NEST HttpClientHandler 证书

标签 ssl elasticsearch .net-core nest

我正在尝试将 Elasticsearch NEST 与 .NET Core 和我们的 Elasticsearch 实例结合使用。我们通过 SSL 连接,它有一个我们需要以编程方式接受的通配符证书。我想弄清楚如何将 HttpClientHandler 挂接到 NEST 以接受它。似乎没有很好的文档说明如何操作,它只是说按照他们的说明进行操作 https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/connecting.html#configuring-ssl .

如果可能的话,我正在寻找一个例子。提前致谢!

最佳答案

我想通了。我需要创建一个 HttpConnection 并覆盖 CreateHttpClientHandler 方法。这是一个无论证书是什么都返回 true 的示例。

public class ConnectionWithCert : HttpConnection
{
    protected override HttpClientHandler CreateHttpClientHandler(RequestData requestData)
    {
        var handler = base.CreateHttpClientHandler(requestData);
        handler.ServerCertificateCustomValidationCallback = ValidateCertificate;
        return handler;
    }

    private bool ValidateCertificate(HttpRequestMessage message, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors errors)
    {
        return true;
    }
}

一个人会想要检查证书以确保它是他们所期望的。

然后,我在 ConnectionSettings

中添加了这个连接
var connectionSettings = new ConnectionSettings(connnectionPool, new ConnectionWithCert());

可能想做一些依赖注入(inject),但我想我会分享解决方案,以防万一其他人想知道他们需要做什么。

关于ssl - Elasticsearch NEST HttpClientHandler 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125310/

相关文章:

asp.net - 如何在 Visual Studio 2019 中自动重新加载 .NET Core 项目

Java/Selenium (ieDriver) - 如何避免在每次测试运行中重复 webapp 登录 Before Method (jUnit)

ssl - 访问某些文件夹时要求客户端证书IIS7.5

ssl - Windows 上的 Kibana SSL PEM 错误

elasticsearch - 在Elasticsearch中映射openNLP或StanfordNLP

nested - 在结果集中获取Elasticsearch嵌套对象的值(value)

c# - 你如何在 dotnet core 中为 Nunit 测试设置可并行化属性?

ssl - 在 Windows 上使用私钥导出 SSL 证书

java - 为 Java 7u25 支持配置 Apache ssl.conf

docker - 将ENTRYPOINT和CMD结合到Dockerfile中以不同的可执行文件为目标