Conectarse a la búsqueda elástica segura con certificado autofirmado del paquete Elastic R -- r campo con curl campo con None campo con ropensci camp Relacionados El problema

Connect to Secured Elastic Search with self-signed certificate from elastic R package


1
vote

problema

Español

Estoy ejecutando una instancia Elastic Search con SSL al crear un certificado autofirmado. Me encontré con un problema al conectarme desde el paquete R a través de elastic . Así es como progresé:

Después de habilitar SSL, cuando intenté conectarme a la instancia de búsqueda elástica, obtuve el error de abajo:

  $ curl -u $USER:$PASS 'https://localhost:9200/_cat/health?v' curl: (60) Peer certificate cannot be authenticated with known CA certificates 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.   

Como evidente, este problema se debe a que el certificado no se ha confiado. Una forma es simplemente agregar el certificado autofirmado a la tienda de confianza, pero no sé dónde está. Otra forma es simplemente omitir la verificación del certificado agregando -k. Pero quería realizarlo. Por lo tanto, encontré un trabajo alrededor para especificar el root-ca.pem como se muestra a continuación:

  $ curl -u $USER:$PASS 'https://localhost:9200/_cat/health?v' --cacert /home/user/root-ca.pem epoch      timestamp cluster     status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1479462058 03:40:58  es-cluster yellow          1         1    365 365    0    0      364             0                  -                 50.1%   

Entonces otra pregunta me ayudó a crear un archivo ~/.curlrc como se muestra a continuación:

  $ cat ~/.curlrc capath=/home/user/   

Después de eso, no tuve que especificar el certificado incluso.

  $ curl -u $USER:$PASS 'https://localhost:9200/_cat/health?v' epoch      timestamp cluster     status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1479462172 03:42:52  es-cluster yellow          1         1    365 365    0    0      364             0                  -                 50.1%   

Todo bien hasta ahora, pero ahora, cuando estoy tratando de conectarme a la búsqueda elástica de R . Estoy recibiendo el error por debajo.

  > library(elastic) > connect(es_base = "https://localhost", es_port = 9200, es_user = USER,   es_pwd = PASS) Error:   Failed to connect to https://127.0.0.1:9200   Remember to start Elasticsearch before connecting   

El informe de registros elastic0 . elastic11111/ El paquete puede estar usando HTTR / CURL para realizar la conexión, pero no pude averiguar cómo especificar el certificado. Referí la solución aquí pero funciona para elastic2 .

por favor sugerir.

Versiones:

  • r: 3.3.1
  • r (paquete elástico): 0.7.8
  • Búsqueda elástica: 2.4.1
  • OS: RHEL 6.7
Original en ingles

I am running an Elastic Search instance with SSL by creating a self-signed certificate. I ran into a problem when connecting from R through elastic package. This is how I progressed:

After enabling SSL, when I tried to connect to the Elastic Search instance, I got the below error:

$ curl -u $USER:$PASS 'https://localhost:9200/_cat/health?v' curl: (60) Peer certificate cannot be authenticated with known CA certificates 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. 

As evident, this problem is because of the certificate not been trusted. One way is to just add the self-signed certificate to the truststore, but I don't know where it is. Other way is to just skip certificate verification by adding -k. But I wanted to perform it. Hence I found a work-around to just specify the root-ca.pem as below:

$ curl -u $USER:$PASS 'https://localhost:9200/_cat/health?v' --cacert /home/user/root-ca.pem epoch      timestamp cluster     status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1479462058 03:40:58  es-cluster yellow          1         1    365 365    0    0      364             0                  -                 50.1% 

Then another SO question helped me create a file ~/.curlrc as below:

$ cat ~/.curlrc capath=/home/user/ 

After that, I didn't had to specify the certificate even.

$ curl -u $USER:$PASS 'https://localhost:9200/_cat/health?v' epoch      timestamp cluster     status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1479462172 03:42:52  es-cluster yellow          1         1    365 365    0    0      364             0                  -                 50.1% 

All well till now, but now when I am trying to connect to Elastic Search from R. I am getting the below error.

> library(elastic) > connect(es_base = "https://localhost", es_port = 9200, es_user = USER,   es_pwd = PASS) Error:   Failed to connect to https://127.0.0.1:9200   Remember to start Elasticsearch before connecting 

The logs report unknown_ca error. elastic R package might be using either httr/curl to make the connection but I couldn't figure out how to specify the certificate. I referred the solution here but it works for RCurl.

Please suggest.

Versions:

  • R : 3.3.1
  • R (Elastic package) : 0.7.8
  • Elastic Search: 2.4.1
  • OS: RHEL 6.7
           
   
   

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

Según lo sugerido por @sckott, tuve que establecer el parámetro last_updated1 . A continuación se muestra lo que funcionó en mi caso:

  library(elastic) library(httr) set_config(config(cainfo = "/home/user/root-ca.pem")) connect(es_base = "https://localhost", es_port = 9200, es_user = USER,   es_pwd = PASS)   

Gracias sckott.

 

As suggested by @sckott, I had to set the cainfo parameter. Below is what worked in my case:

library(elastic) library(httr) set_config(config(cainfo = "/home/user/root-ca.pem")) connect(es_base = "https://localhost", es_port = 9200, es_user = USER,   es_pwd = PASS) 

Thank you Sckott.

 
 

Relacionados problema

0  Extracción de tiempo diario NOAA  ( Noaa daily weather extraction ) 
Soy realmente nuevo en R y estoy tratando de usar rnoaa para extraer información. Tengo un conjunto de dos fechas: 3 de septiembre de 2013 3 de dicie...

0  Problemas de memoria utilizando el paquete RNOAA  ( Memory issues using rnoaa package ) 
Trabajando con rnoaa Paquete para agregar ID de la estación de EE. UU. A un DF de eventos meteorológicos. A continuación se muestra str() para el rain D...

1  Hallar el plan Drake lo hace reconstruir objetivos que ya había construido previamente  ( Halting drake plan makes it rebuild targets it already had built previously ) 
Actualmente estoy usando drake para ejecutar un conjunto de y gt; 1k simulaciones. He estimado que tomaría unos dos días para ejecutar el conjunto completo,...

4  ACM DIGITAL BIBLIBRY ACCESS CON R - NO API Entonces, ¿qué posibilidades?  ( Acm digital library access with r no api so how possible ) 
Quiero buscar la Biblioteca Digital ACM usando el código R, recuperando al menos los metadatos, incluidos los resúmenes, y en el mejor de los casos, el texto ...

1  ¿Cómo puedo cargar mi llave API en RNOAA usando R?  ( How do i load my api key into rnoaa using r ) 
Soy nuevo en R y tratando de cargar mi token API para obtener acceso al paquete RNOAA. Tengo el token API, simplemente no sé cómo acceder a ella. ¿Alguien pue...

1  Devolver solo valores no faltantes de la búsqueda de OSM  ( Return only non missing values from osm search ) 
Estoy tratando de simplemente obtener valores que no son NA devueltos de Osmdata. Por ejemplo, tomar la dirección de correo electrónico. Sin embargo, la sigui...

8  Cómo buscar PubMed u otras bases de datos usando R  ( How to search pubmed or other databases using r ) 
He estado usando recientemente el excelente vmImage3 paquete , lo que lo hace Muy fácil de buscar a través de los documentos organizados en la API de la Bi...

2  N nombre de archivo de DRAke con variable  ( R drake file out name with variable ) 
Estoy usando drake Para crear múltiples archivos de salida, donde Quiero especificar la ruta por una variable. Algo como outpath <- "data" outfile <- f...

0  Paquete R PAQUETE DE CALLTRICS CALL DEVOLUCIÓN DE API "PORT 443: Conexión rechazada". ¿Qué me estoy perdiendo?  ( Qualtrics r package api call returns port 443 connection refused what am i ) 
¡Buenas tardes! Soy un desarrollador de R Auto-enseñado, por lo que podría no estar usando la jerga correcta, pero por favor soporta conmigo. He escrito u...

8  Ajuste dinámicamente la altura y / o el ancho de la producción brillante brillante basada en el tamaño de la ventana  ( Dynamically adjust height and or width of shiny plotly output based on window si ) 
Me gustaría tener la altura y el ancho de la salida de colores brillantes ajustados al tamaño de la ventana actual. He intentado usar el siguiente pero sin us...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos