elasticsearch,remote-access,Ruby On Rails,elasticsearch,Remote Access" /> elasticsearch,remote-access,Ruby On Rails,elasticsearch,Remote Access" />

Ruby on rails 在ubuntu远程服务器上通过https为ElasticSearch配置Rails

Ruby on rails 在ubuntu远程服务器上通过https为ElasticSearch配置Rails,ruby-on-rails,elasticsearch,remote-access,Ruby On Rails,elasticsearch,Remote Access,我的prod应用程序(在Ubuntu服务器上)无法通过HTTPS访问我的ElasticSearch服务器(在另一个Ubuntu服务器上) 我的ES服务器基于一个代理通行证,带有带有https和基本身份验证的Nginx。我可以通过访问它,设置我的基本身份验证用户名/密码并获得ES响应: { "name": "Cutthroat", "cluster_name": "elasticsearch", "version": { "number": "2.0.0", "build_hash": "ab54

我的prod应用程序(在Ubuntu服务器上)无法通过HTTPS访问我的ElasticSearch服务器(在另一个Ubuntu服务器上)

我的ES服务器基于一个代理通行证,带有带有https和基本身份验证的Nginx。我可以通过访问它,设置我的基本身份验证用户名/密码并获得ES响应:

{
"name": "Cutthroat",
"cluster_name": "elasticsearch",
"version": {
"number": "2.0.0",
"build_hash": "ab54438d6af8f9340d50c5c786151783ce7d6be5",
"build_timestamp": "2015-10-22T08:09:48Z",
"build_snapshot": false,
"lucene_version": "5.2.1"
},
"tagline": "You Know, for Search"
}
我的4.2 rails应用程序在localhost:9200上使用ES在本地运行良好

我用了这些宝石:

gem 'elasticsearch-model'
gem 'elasticsearch-rails'
我的4.2 rails elasticsearch.yml产品配置如下所示:

host1:
  scheme: https
  host: elastic.myapp.com
  port: 443
  username: username
  password: password
我的ruby连接文件是:

Elasticsearch::Model.client = Elasticsearch::Client.new hosts: hosts, transport_options: { ssl: { ca_file: '/etc/ssl/certs/cacert.pem' } }
错误是:

(SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)
我不知道为什么我在我的Ubuntu 14.04上安装了/etc/ssl/certs/cacert.pem(安装在服务器上,那里是Rails应用程序,不是https ES服务器,对吗?)

请注意,如果我将连接更改为:

Elasticsearch::Model.client = Elasticsearch::Client.new hosts: hosts, transport_options: { ssl: { verify: false } }
它是有效的。。。但是SSL没有在生产中验证,太糟糕了

我在Ubuntu服务器上错过了什么

回答:事实上,我需要将SSL证书从Elastic服务器复制到应用服务器,在Elastic config中指明位置,现在它就可以工作了。