Digamos que um site tenha balanceamento de carga entre vários servidores. Quero executar um comando para testar se está funcionando, como curl DOMAIN.TLD
. Portanto, para isolar cada endereço IP, eu especifico o IP manualmente. Mas muitos sites podem ser hospedados no servidor, então eu ainda fornecer um cabeçalho de host, como este: curl IP_ADDRESS -H 'Host: DOMAIN.TLD'
. No meu entendimento, esses dois comandos criam exatamente a mesma solicitação HTTP. A única diferença é que, no último, retiro a parte de pesquisa de DNS do cURL e faço isso manualmente (por favor, corrija-me se estiver errado).
Tudo bem até agora. Mas agora eu quero fazer o mesmo para um URL HTTPS. Mais uma vez, eu poderia testá-lo assim curl https://DOMAIN.TLD
. Mas eu quero especificar o IP manualmente, então eu corro curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'
. Agora, recebo um erro cURL:
curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'.
É claro que posso contornar isso dizendo ao cURL para não se importar com o certificado (a opção "-k"), mas não é o ideal.
Existe uma maneira de isolar o endereço IP que está sendo conectado do host que está sendo certificado por SSL?
Host
cabeçalho, assim--resolve
é a maneira correta de fixar um endereço IP.Respostas:
Acho que encontrei uma solução passando pelo manual do cURL:
de CURLOPT_RESOLVE explicado
fonte
curl -v
e pode ver que o curl adiciona a opção de resolução ao cache do DNS temporariamente e adiciona o endereço IP especificado.IP_ADDRESS
, ele ignorará silenciosamente a opção.Você pode alterar o arquivo / etc / hosts para fazer o servidor pensar que o domínio está localizado em um determinado IP.
Esta é a sintaxe:
Isso fará com que o cURL use o endereço IP desejado, sem que o certificado SSL seja quebrado.
fonte
Aqui está a
man
entrada para a resposta mais votada no momento, uma vez que eles incluíram apenas um link para o componente programático:Porém, devido à limitação fornecida ("Significa que você precisa de várias entradas se desejar fornecer endereço para o mesmo host, mas com portas diferentes."), Consideraria outra opção mais nova que pode traduzir as duas ao mesmo tempo:
fonte
Se você estiver executando curl no Windows, use aspas duplas
Você pode pular o esquema / protocolo antecipadamente, mas não pode pular o número da porta na string --resolve.
fonte