2017-02-14 3 views
0

현재 Elastic Search 1.7에서 5.2로 업그레이드 중입니다. 업그레이드 경로가 없다는 것을 알고 있습니다. 원래 Nest와 ElastiSearch.Net에는 기본 인증을 사용할 수있는 X509 인증서를 첨부 할 수있는 방법이 없었습니다. 이 문제를 해결하기 위해 기존 github repos의 사본을 만들고 코드를 직접 수정하여이를 허용했습니다. 이것은 궁극적으로 사용자 정의 코드가 있기 때문에 우리가 누젠트 패키지를 사용할 수 없기 때문에 오랫동안 업그레이드하지 못하게했습니다.Nest Elastic 클라이언트에서 X509 인증서를 사용하는 방법

이제 업그레이드가 진행되고 있는데 이것이 해결되었는지 궁금합니다. 또는 최소한 ElasticClient (Nest에서) 또는 ElasticLowLevelClient (ElasticSearch.Net)에서 인증서를 가져 와서 호출 할 때 사용할 수있는 고리가 있습니다.

또 다른 옵션은 초기 생성시 PUT 요청을 사용하여 색인을 생성하여 인증서가 필요한 곳입니다. 우리가 가지고있는 문제는 모델에 추가 된 사용자 정의 속성이 있기 때문에 AutoMap 메서드를 사용해야한다는 것입니다. 따라서 인덱스 생성에 필요한 속성이 필요합니다. 주어진 모델에 대한 AutoMap의 결과를 JSON으로 생성하고 웹 클라이언트를 사용하여 인증서를 첨부하는 방법이 있는지 확실하지 않습니다.

자세한 내용이 필요한 경우 알려주십시오.

답변

0

NEST와 Elasticsearch.Net이 모두 1.x로 되돌아가는 연결을 사용자 정의 할 수 있습니다. 이는 ElasticClient 생성자에 전달 된 ConnectionSettings 인스턴스에 IConnection의 구현을 제공하여 수행됩니다.

먼저 사용자 정의 IConnection을 작성하십시오. 그 다음 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); 
이 통과 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; 
    } 
} 

에서 파생하는 가장 쉬운 방법

관련 문제