Подключитесь к конечной точке ElasticSearch, размещенной на Azure, через шлюз приложений разгрузки SSL - PullRequest
0 голосов
/ 26 августа 2018

Я использовал шаблон Elasticsearch Azure Marketplace для развертывания кластера ElasticSearch в Azure.

Я настроил его с SSL / TLS для связи с Elasticsearch через уровень HTTP через шлюз приложений ивсе работает нормально, я могу войти в Kibana и посмотреть состояние узлов моего кластера.

Проблема в том, что я не могу подключиться к ElasticSearch через NEST.NET через шлюз приложений Azure от клиента, для этого требуетсясертификат и пароль, которые я указал при отправке шаблона, но при его установке я получаю "Невозможно прочитать данные из транспортного соединения" * и "Не удалось установить соединение SSL, см. внутреннее исключение.« при отправке запроса.

Вот код, который я использую на своем клиенте для подключения к ElasticSearch:

    public IElasticClient Client { get; }

    public ElasticService(IConfiguration configuration)
    {
        var settings = new ConnectionSettings(new Uri(configuration["Elastic:Endpoint"]))
            .DefaultIndex("impression");
        settings.ClientCertificate(new X509Certificate2(@"C:\git\server.p12", "PASSWORD", X509KeyStorageFlags.Exportable));
        Client = new ElasticClient(settings);
    }

1 Ответ

0 голосов
/ 26 августа 2018

Сертификат в этом случае не используется для аутентификации сертификата в Elasticsearch, так как используется метод ClientCertificate, но используется для безопасности транспортного уровня (TLS).

Сертификат TLS может бытьустанавливается с ServerCertificateValidationCallback

var pool = new SingleNodeConnectionPool(new Uri(configuration["Elastic:Endpoint"]));

var settings = new ConnectionSettings(pool)
    .DefaultIndex(defaultIndex)
    .BasicAuthentication("elastic", "<password>")
    .ServerCertificateValidationCallback(
        CertificateValidations.AuthorityPartOfChain(
            new X509Certificate2(@"C:\git\server.p12", "PASSWORD"))
    );

var client = new ElasticClient(settings);

В зависимости от того, как был сгенерирован сертификат, переданный в шлюз приложений, CertificateValidations предлагает AuthorityPartOfChain и AuthorityIsRoot, в зависимости от того, настроен ли сертификат, с которым настроен клиентчасть цепочки или является корневым сертификатом соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...