Curl -X GET 'https://localhost:9200'

curl -X GET 'https://localhost:9200'

curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

not sure whats your query here ?

but if you want to avoid this error then you can either :

  1. Have the root CA installed in your truststore (java truststore)
  2. use the command as curl -X -k GET 'https://localhost:9200'

Fiz a instalação do Elasticsearch 8 no centos 7,

mas quando consulto seu funcionamento na porta 9200 dá esse erro.

Tem algum artigo que mostra como faz o procedimento que você mencionou?

Here it is https://connect2id.com/blog/importing-ca-root-cert-into-jvm-trust-store

You need to know the root certificate which was used to secure the cluster though.

If it's the default one from ES then please refer : Set up basic security for the Elastic Stack plus secured HTTPS traffic | Elasticsearch Guide [8.8] | Elastic

Obrigado pelos artigos! É possível importar ca_bundle.crt?

Tentei resolver criando o certificado com os scripts do Elastic:

cd /usr/share/elasticsearch/
./bin/elasticsearch-certutil ca
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
./bin/elasticsearch-certutil http

mas na hora de criar usuário e senha tá dando erro

./bin/elasticsearch-setup-passwords auto -u "http://127.0.0.1:9200"

ERROR: Failed to connect to elasticsearch at http://127.0.0.1:9200/_security/_authenticate?pretty. Is the URL correct and elasticsearch running?

Alguém pode me ajudar?

De acordo com seu primeiro post o seu Elasticsearch tá rodando com https, você precisa fazer o curl pra https, não http.

Se der erro de certificado não reconhecido você precisa usar -k como parâmetro no curl.

./bin/elasticsearch-setup-passwords auto -u "https://127.0.0.1:9200"

Failed to authenticate user 'elastic' against https://127.0.0.1:9200/_security/_authenticate?pretty
Possible causes include:
 * The password for the 'elastic' user has already been changed on this cluster
 * Your elasticsearch node is running against a different keystore
   This tool used the keystore at /etc/elasticsearch/elasticsearch.keystore

You can use the `elasticsearch-reset-password` CLI tool to reset the password of the 'elastic' user


ERROR: Failed to verify bootstrap password

./bin/elasticsearch-setup-passwords auto -u -k "https://127.0.0.1:9200"

Exception in thread "main" java.net.MalformedURLException: no protocol: -k
        at java.base/java.net.URL.<init>(URL.java:764)        at java.base/java.net.URL.<init>(URL.java:646)
        at java.base/java.net.URL.<init>(URL.java:582)
        at org.elasticsearch.xpack.security.authc.esnative.tool.SetupPasswordTool$SetupCommand.setupOptions(SetupPasswordTool.java:307)
        at org.elasticsearch.xpack.security.authc.esnative.tool.SetupPasswordTool$AutoSetup.execute(SetupPasswordTool.java:146)
        at org.elasticsearch.common.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:54)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:85)
        at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:94)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:85)
        at org.elasticsearch.cli.Command.main(Command.java:50)
        at org.elasticsearch.launcher.CliToolLauncher.main(CliToolLauncher.java:64)

O -k é pra usar no curl, não no elasticsearch-setup-passwords.

Você já gerou os passwords? Quando você instala pela primeira vez ele já gera as senhas pros usuários nativos, é isso que a primeira mensagem te disse.

The password for the 'elastic' user has already been changed on this cluster

Se você precisa resetar a senha do usuário elastic você precisa usar o outro comando.

You can use the elasticsearch-reset-password CLI tool to reset the password of the 'elastic' user

A documentação pra esse comando está aqui.

Não gerei a senha só fiz a instalação nas seguintes etapas:

sudo nano/etc/yum.repos.d/elasticsearch.repo

[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum clean all
sudo yum makecache
sudo yum -y install elasticsearch
sudo systemctl enable --now elasticsearch.service
systemctl start elasticserarch

Mas deu erro ao iniciar o serviço, então fiz sua recomendação de criar:
Link artigo da solução

cd /usr/share/elasticsearch
sudo mkdir tmp
sudo chown elasticsearch:elasticsearch tmp
sudo systemctl edit elasticsearch

Então o serviço funcionou, mas não consigo usar o comando Curl -X GET ‘https://localhost:9200

Durante o processo de instalação ele cria automaticamente as senhas pros usuários nativos e mostra na tela, se você não copiou vai precisar regerar.

Qual o erro? No screenshot compartilhado o serviço tá rodando normal há mais de 3 horas, se desse erro para iniciar não mostraria isso.

Lembrando que no Elasticsearch 8 por padrão a segurança é habilitada é você precisa se autenticar pra fazer qualquer request.

curl -k GET https://localhost:9200 -u elastic, ai vai pedir a senha do usuário elastic.

1 Like

Desculpe-me! Reformulei minha resposta anterior com todos os passos executados desde a instalação até a correção do funcionamento do serviço.

Referente a curl -k GET https://localhost:9200 -u elastic, funcionou só que conforme você observou não anotei a senha gerada automaticamente.

curl -k GET https://localhost:9200 -u elastic
Enter host password for user 'elastic':

Você vai precisar resetar a senha então com o comando:

You can use the elasticsearch-reset-password CLI tool to reset the password of the 'elastic' user

Só fazer como no exemplo da documentação.

usei o comando elasticsearch-reset-password no diretório /etc/elasticsearch

bash: elasticsearch-reset-password: command not found

Não estou sabendo usar o comando de forma correta.

Esse comando fica no mesmo diretório que todos os outros comandos, o /usr/share/elasticsearch é o mesmo diretório de onde você executou o elasticsearch-setup-passwords.

Segui os passos e o artigo de suas últimas respostas e funcionou normalmente!

Segui até o repositório correto:

cd /usr/share/elasticsearch

Redefinia a senha:

bin/elasticsearch-reset-password -u elastic

This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y

A senha foi gerada no terminal e usei ela no comando curl -k GET https://localhost:9200 -u elastic e tudo funcionou perfeitamente, muito obrigado! :slight_smile:

Agora só preciso vincular o elasticsearch no firewall se puder me ajudar.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.