如何使用Nest弹性客户端使用X509证书



我当前正在从弹性搜索1.7升级到5.2。我知道没有升级路径,这很好。我们最初遇到的一个问题是Nest and Elastisearch.net,因为它只能使用基本身份验证,因此无法附上X509证书。为了解决这个问题,我们制作了现有的GitHub存储库并直接修改代码以允许它的副本。最终,这是因为我们不能仅使用Nuget软件包,因为我们现在拥有自定义代码,所以我们无法升级这么长时间。

现在,我们正在升级,我正在尝试找出是否对此进行了修复。或者,至少可以使用任何钩子来获取ElasticClient(In Nest)或ElasticLowLowleVelClient(在Elasticsearch.net中)获取证书并在拨打呼叫时将其传递。

另一个选择是使用PUT请求来创建初始创建的索引,这是我们需要证书的地方。我们存在的问题我们需要使用自动制品方法,因为我们在模型上添加了一些自定义属性,并且需要这些属性进行索引创建。我不确定是否有一种方法可以为给定模型生成自动化的结果,而只需使用网络限制来附加证书即可。

让我知道您是否需要详细信息。

可以自定义嵌套和elasticsearch.net的连接,一直使用回到1.x。这是通过将您自己的IConnection实现为ConnectionSettings实例提供给ElasticClient构造函数。

首先创建您的自定义IConnection;最容易衍生HttpConnection

public class HttpConnectionWithClientCertificate : HttpConnection
{
    protected override HttpWebRequest CreateHttpWebRequest(RequestData requestData)
    {
        var request = base.CreateHttpWebRequest(requestData);
        // add the certificate to the request
        request.ClientCertificates.Add(new X509Certificate("path_to_cert"));
        return request;
    }
}

然后将其传递给ConnectionSettings

var node = new Uri("http://localhost:9200");
var connectionPool = new SingleNodeConnectionPool(node);
var connection = new HttpConnectionWithClientCertificate();
var settings = new ConnectionSettings(connectionPool, connection);
var client = new ElasticClient(config);

相关内容

  • 没有找到相关文章

最新更新