Supposons qu'un site Web soit équilibré entre plusieurs serveurs. Je veux exécuter une commande pour vérifier si cela fonctionne, tel que curl DOMAIN.TLD
. Donc, pour isoler chaque adresse IP, je spécifie l'adresse IP manuellement. Mais de nombreux sites peuvent être hébergés sur le serveur, donc je fournir encore un en- tête d'hôte, comme ceci: curl IP_ADDRESS -H 'Host: DOMAIN.TLD'
. Si j'ai bien compris, ces deux commandes créent exactement la même requête HTTP. La seule différence est que dans le dernier cas, je retire la partie de la recherche DNS de cURL et le fais manuellement (corrigez-moi si je me trompe).
Tout va bien jusqu'à présent. Mais maintenant, je veux faire la même chose pour une URL HTTPS. Encore une fois, je pourrais le tester comme ça curl https://DOMAIN.TLD
. Mais je veux spécifier l'adresse IP manuellement, alors je cours curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'
. Maintenant, je reçois une erreur cURL:
curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'.
Je peux bien sûr contourner ce problème en disant à cURL de ne pas se soucier du certificat (l'option "-k"), mais ce n'est pas idéal.
Existe-t-il un moyen d'isoler l'adresse IP connectée à l'hôte certifié par SSL?
Host
tête, c’est donc--resolve
le bon moyen de verrouiller une adresse IP.Réponses:
Pensez que j'ai trouvé une solution en passant par le manuel cURL:
de CURLOPT_RESOLVE expliqué
la source
curl -v
et vous pouvez voir que curl ajoute l'option de résolution au cache du cache DNS temporairement, et ajoute utilise l'adresse IP que vous avez spécifiée.IP_ADDRESS
, l’option sera ignorée en silence.Vous pouvez modifier dans / etc / hosts pour que le serveur pense que le domaine est situé à une certaine adresse IP.
C'est la syntaxe:
Cela obligera cURL à utiliser l'adresse IP de votre choix sans le certificat SSL.
la source
Voici l'
man
entrée pour la réponse actuellement la plus votée puisqu'elles n'incluaient qu'un lien vers le composant programmatique:Mais en raison de la limitation donnée ("Cela signifie que vous avez besoin de plusieurs entrées si vous voulez fournir une adresse pour le même hôte mais des ports différents."), Je considérerais une autre option, plus récente, pouvant traduire les deux en même temps:
la source
Si vous utilisez curl sous Windows, utilisez des guillemets doubles
Vous pouvez ignorer le schéma / protocole au début, mais vous ne pouvez pas ignorer le numéro de port dans la chaîne --resolve.
la source