.net 通过SSL卸载应用程序网关连接到Azure托管的ElasticSearch端点
我已经使用该模板在Azure中部署了ElasticSearch集群 我将其配置为SSL/TLS,以便通过HTTP层通过应用程序网关与Elasticsearch通信,一切正常,我可以登录到Kibana并查看集群节点的状态 问题是我无法从客户端通过Azure Application Gateway使用NEST.NET连接到ElasticSearch,它需要提交模板时提供的证书和密码,但当我设置模板时,我会得到“无法从传输连接读取数据”和“无法建立SSL连接,请参阅内部异常。”当我发送请求时 以下是我从客户端连接到ElasticSearch时使用的代码:.net 通过SSL卸载应用程序网关连接到Azure托管的ElasticSearch端点,.net,azure,
elasticsearch,nest,azure-marketplace,.net,Azure,
elasticsearch,Nest,Azure Marketplace,我已经使用该模板在Azure中部署了ElasticSearch集群 我将其配置为SSL/TLS,以便通过HTTP层通过应用程序网关与Elasticsearch通信,一切正常,我可以登录到Kibana并查看集群节点的状态 问题是我无法从客户端通过Azure Application Gateway使用NEST.NET连接到ElasticSearch,它需要提交模板时提供的证书和密码,但当我设置模板时,我会得到“无法从传输连接读取数据”和“无法建立SSL连接,请参阅内部异常。”当我发送请求时 以下是我
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)
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);
var-pool=newsinglenodeconnectionpool(新Uri(配置[“弹性:端点]));
var设置=新连接设置(池)
.DefaultIndex(DefaultIndex)
.基本认证(“弹性”、“弹性”)
.ServerCertificateValidationCallback(
CertificateValidations.AuthorityPartOfChain(
新的X509Certificate2(@“C:\git\server.p12”,“密码”))
);
var客户端=新的ElasticClient(设置);
根据传递给应用程序网关的证书是如何生成的,
CertificateValidations
提供了AuthorityPartOfChain
和AuthorityIsRoot
,具体取决于客户端配置的证书是链的一部分还是根证书。我认为这取决于路径正确,但仍会引发相同的错误。我已将URI设置为,我确信我的两个密码和证书有效。我不明白发生了什么。我已测试了AuthorityPartOfChain和AuthorityIsRootIf,如果您直接点击应用程序网关公共IP并输入弹性
基本身份验证详细信息,您是否获得 200确定
响应?准确地说,我使用的是自签名证书。从浏览器(接受任何无效的证书警告)如何?感谢@Russ Cam,我成功地实现了这一点,我误读了文档。使用外部负载平衡器工作得非常好。