ASP.NET Core应用连接本地Docker OpenSearch遇连接拒绝及SSL错误
问题解决配置要点
1. 修正连接协议与地址
官方默认docker-compose启动的OpenSearch默认启用HTTPS,9200是HTTPS端口,你之前用http://localhost:9200会导致HTTP请求发送到HTTPS端口,触发NotSslRecordException错误。修改appsettings.json:
"OpenSearch": { "Uri": "https://localhost:9200", "Username": "admin", "Password": "admin" }
如果你的ASP.NET Core应用也通过Docker部署,不要用localhost,改用docker-compose中OpenSearch服务的默认名称opensearch-node1作为地址:
"Uri": "https://opensearch-node1:9200"
2. 禁用自签名证书验证(开发环境)
本地OpenSearch使用自签名证书,ASP.NET Core默认会拒绝该证书,导致连接异常。在创建OpenSearchClient时添加禁用SSL验证的配置:
var config = configuration.GetSection("OpenSearch"); var settings = new ConnectionSettings(new Uri(config["Uri"])) .BasicAuthentication(config["Username"], config["Password"]) .DisableSslVerification() // 仅开发环境使用,生产环境需配置信任证书 .EnableDebugMode(); // 可选,用于调试请求细节 var client = new OpenSearchClient(settings);
3. 统一Docker网络(应用在Docker中时)
如果你的ASP.NET Core应用也运行在Docker容器内,需确保它和OpenSearch容器在同一网络中。查看你的docker-compose.yml,OpenSearch默认会创建opensearch-net网络,将应用服务加入该网络:
services: your-aspnet-app: build: . networks: - opensearch-net ports: - "5000:5000" opensearch-node1: image: opensearchproject/opensearch:latest networks: - opensearch-net # 其他OpenSearch配置... networks: opensearch-net: driver: bridge
4. 先验证OpenSearch服务可用性
用curl命令先确认本地OpenSearch服务正常响应:
curl -X GET https://localhost:9200 -u admin:admin --insecure
如果返回节点信息,说明服务本身无问题,再聚焦应用端配置修正。
内容的提问来源于stack exchange,提问作者BeniaminoBaggins
相关产品推荐
相关产品推荐

