簡體   English   中英

通過SSL卸載應用程序網關連接到Azure托管的ElasticSearch終結點

[英]Connect to an Azure hosted ElasticSearch endpoint through a SSL offloading Application Gateway

我已使用模板Elasticsearch Azure Marketplace在Azure中部署ElasticSearch集群。

我為它配置了SSL / TLS,以便通過Application Gateway通過HTTP層與Elasticsearch進行通信,並且一切正常,我可以登錄到Kibana並查看集群節點的狀態。

問題是我無法從客戶端通過Azure應用網關使用NEST.NET通過NEST.NET連接到ElasticSearch,它需要我在提交模板時提供的證書和密碼,但是當我設置模板時,我得到“無法從傳輸讀取數據連接”“無法建立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);
    }

在這種情況下,該證書不用於對Elasticsearch的證書身份驗證,因為使用了ClientCertificate方法,但將其用於傳輸層安全性(TLS)。

可以使用ServerCertificateValidationCallback設置TLS證書

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提供AuthorityPartOfChainAuthorityIsRoot ,分別取決於配置客戶端的證書是鏈的一部分還是根證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM