请求容器化OpenSearch未携带curl参数报SSL错误如何解决
OpenSearch Docker部署SSL证书报错解决方案
curl: (60) SSL certificate problem报错是OpenSearch默认启用自签名HTTPS证书、客户端未信任该证书导致,以下是三类可直接落地的解决路径,按需选择即可:
方案1:全局配置curl跳过证书校验(适配自动化脚本场景,无需修改OpenSearch配置)
该方案不需要调整OpenSearch服务端配置,一劳永逸解决curl请求的证书校验问题,适合内网测试/可信环境使用:
- 编辑当前用户的curl全局配置文件
~/.curlrc(不存在则新建),写入以下配置:insecure - 保存生效后,直接执行
curl -XGET https://localhost:9200 -u 'admin:admin'即可正常访问,不需要每次请求额外带--insecure参数。如果是Python、Java等其他语言的自动化请求客户端,直接在客户端配置中开启「跳过SSL证书验证」选项即可达到相同效果。
方案2:将OpenSearch自签证书加入系统信任链(生产环境推荐)
如果需要保留HTTPS加密、同时不想全局跳过证书校验,可以把OpenSearch的根证书导入系统信任存储:
- 从运行中的OpenSearch容器拷贝根证书到宿主机:
docker cp <你的OpenSearch容器ID或名称>:/usr/share/opensearch/config/root-ca.pem ./ - 将证书导入系统信任库:
- Debian/Ubuntu系列系统:将
root-ca.pem移动到/usr/local/share/ca-certificates/目录,执行update-ca-certificates刷新信任链 - RHEL/CentOS系列系统:将
root-ca.pem移动到/etc/pki/ca-trust/source/anchors/目录,执行update-ca-trust刷新信任链
- Debian/Ubuntu系列系统:将
- 配置完成后所有系统层面的HTTP客户端(curl、SDK、浏览器等)都会正常信任OpenSearch的HTTPS证书,不会再抛出证书校验错误。
方案3:关闭OpenSearch HTTPS,直接使用HTTP访问
如果不需要HTTPS加密,可以直接关闭OpenSearch的安全SSL插件,走纯HTTP协议访问:
- 修改Docker启动参数:
- 如果是
docker run启动,在启动命令中添加以下环境变量参数:-e plugins.security.ssl.http.enabled=false -e plugins.security.ssl.transport.enabled=false - 如果是docker-compose部署,在服务的
environment配置段添加:environment: - plugins.security.ssl.http.enabled=false - plugins.security.ssl.transport.enabled=false # 如需同时关闭账号密码认证,可再加下面这行 # - DISABLE_SECURITY_PLUGIN=true
- 如果是
- 重启OpenSearch容器,之后直接通过HTTP协议访问即可,示例请求:
全程不会有任何SSL相关报错。curl -XGET http://localhost:9200 -u 'admin:admin'
内容的提问来源于stack exchange,提问作者Xavi Font
相关产品推荐
相关产品推荐

