Digamos que un sitio web tiene equilibrio de carga entre varios servidores. Quiero ejecutar un comando para probar si está funcionando, como curl DOMAIN.TLD
. Entonces, para aislar cada dirección IP, especifico la IP manualmente. Sin embargo, muchos sitios web pueden ser alojados en el servidor, por lo que todavía proporcionan un encabezado de host, como esto: curl IP_ADDRESS -H 'Host: DOMAIN.TLD'
. Según tengo entendido, estos dos comandos crean exactamente la misma solicitud HTTP. La única diferencia es que en este último saco la parte de búsqueda de DNS de cURL y lo hago manualmente (corríjame si me equivoco).
Todo bien hasta ahora. Pero ahora quiero hacer lo mismo para una URL HTTPS. De nuevo, podría probarlo así curl https://DOMAIN.TLD
. Pero quiero especificar la IP manualmente, así que ejecuto curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'
. Ahora recibo un error de cURL:
curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'.
Por supuesto, puedo evitar esto diciéndole a cURL que no le importe el certificado (la opción "-k"), pero no es lo ideal.
¿Hay alguna manera de aislar la dirección IP a la que está conectado desde el host que está certificado por SSL?
Host
encabezado, por lo que--resolve
es la forma correcta de anclar una dirección IP.Respuestas:
Creo que encontré una solución en el manual de cURL:
de CURLOPT_RESOLVE explicado
fuente
curl -v
y puede ver que curl agrega la opción de resolución a la memoria caché DNS temporalmente y agrega la dirección IP que especificó.IP_ADDRESS
, ignorará silenciosamente la opción.Puede cambiar en / etc / hosts para hacer que el servidor piense que el dominio se encuentra en una determinada IP.
Esta es la sintaxis:
Esto hará que cURL use la dirección IP que desea sin que se rompa el certificado SSL.
fuente
Aquí está la
man
entrada para la respuesta más votada actualmente, ya que solo incluyeron un enlace al componente programático:Pero debido a la limitación dada ("Significa que necesita varias entradas si desea proporcionar la dirección para el mismo host pero diferentes puertos"), consideraría otra opción más nueva que puede traducir ambas al mismo tiempo:
fuente
Si está ejecutando curl en Windows, use comillas dobles
Puede omitir el esquema / protocolo por adelantado, pero no puede omitir el número de puerto en la cadena --resolve.
fuente