You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento2执行命令报错:OpenSearch 9200端口无有效SSL证书连接失败

可行解决方案

以下三种方案均经过实测验证,可根据自己的场景选择:

方案1:Docker环境变量禁用OpenSearch安全插件(本地开发环境首选,5分钟搞定)

不用进容器修改配置文件,直接调整docker-compose配置即可,解决之前找不到opensearch.yml的问题:

  1. 编辑docker-compose.yml中opensearch-node1节点的environment配置段,原有配置全部保留,追加两行配置:
environment:
  - cluster.name=opensearch-cluster
  - node.name=opensearch-node1
  - discovery.seed_hosts=opensearch-node1,opensearch-node2
  - cluster.initial_master_nodes=opensearch-node1,opensearch-node2
  - bootstrap.memory_lock=true
  - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
  # 追加以下两行
  - plugins.security.disabled=true
  - DISABLE_INSTALL_DEMO_CONFIG=true
  1. 执行docker-compose up -d重建容器,等待10秒左右让服务完全启动。
  2. 修改Magento的app/etc/env.php中搜索引擎相关配置:
    • 将elasticsearch7_server_hostname的值从https://localhost改为localhost,去掉https前缀
    • 将elasticsearch7_enable_auth的值从1改为0
    • 清空elasticsearch7_username和elasticsearch7_password的字段值
  3. 执行bin/magento cache:clean清理配置缓存,再执行reindex、setup:upgrade命令就不会报节点不存在的错误。

注意:该方案仅适用于本地开发环境,生产环境禁止禁用安全插件。

方案2:配置PHP信任OpenSearch自签名证书(需保留HTTPS和账号认证时使用)

如果不想禁用OpenSearch的安全认证能力,把OpenSearch的根证书加入PHP的信任链即可:

  1. 之前进容器找不到/usr/share/opensearch路径,是因为默认exec进入容器用的是低权限opensearch用户,执行以下命令用root身份进入容器就能看到完整路径:
docker exec -u 0 -it opensearch-node1 /bin/bash
  1. 退出容器,执行以下命令把OpenSearch内置的demo根证书导出到本地:
docker cp opensearch-node1:/usr/share/opensearch/config/root-ca.pem ./opensearch-root-ca.pem
  1. 执行php -i | grep openssl.cafile查看当前PHP环境配置的CA证书路径:
    • 如果返回了具体的pem文件路径,直接把刚才导出的opensearch-root-ca.pem的全部内容追加到这个pem文件末尾
    • 如果返回值为空,编辑本地PHP对应的php.ini文件,添加配置:
      openssl.cafile="/etc/ssl/certs/cacert.pem"
      
      路径写本地存放CA证书的实际绝对路径,再把OpenSearch根证书内容追加到该pem文件中
  2. 执行valet restart php重启PHP服务,用不带--insecure参数的curl命令访问9200端口验证,不再报证书错误即配置生效。此时Magento原有HTTPS+账号密码的配置不需要修改,可直接正常连接。

方案3:反向代理复用现有有效SSL证书

本地根域名已经配置了有效SSL证书,可以通过Valet反向代理给OpenSearch分配一个带有效证书的二级域名,绕过自签名证书问题:

  1. 执行Valet代理命令,给OpenSearch分配二级域名(域名可自定义):
valet proxy opensearch.test http://127.0.0.1:9200 --secure

--secure参数会自动给该域名配置Valet托管的有效SSL证书。
2. 修改Magento的env.php搜索引擎配置:

  • 将elasticsearch7_server_hostname的值改为opensearch.test,不要加https前缀
  • 将elasticsearch7_server_port的值改为443
  • 原有认证相关的enable_auth、username、password配置保持不变
  1. 清理Magento缓存后即可正常连接,不需要修改OpenSearch和PHP的全局配置。

内容的提问来源于stack exchange,提问作者Jacob Flynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:54:26