Disons qu'un site web est réparti entre plusieurs serveurs. Je veux exécuter une commande pour tester si cela fonctionne, comme par exemple curl DOMAIN.TLD
. Donc, pour isoler chaque adresse IP, je spécifie l'IP manuellement. Mais de nombreux sites web peuvent être hébergés sur le serveur, donc je fournis toujours un en-tête host, comme ceci : curl IP_ADDRESS -H 'Host: DOMAIN.TLD'
. D'après moi, ces deux commandes créent exactement la même requête HTTP. La seule différence est que dans la dernière, j'enlève la partie recherche DNS de cURL et je la fais manuellement (merci de me corriger 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 ceci curl https://DOMAIN.TLD
. Mais je veux spécifier l'IP manuellement, donc j'exécute curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'
. Maintenant, j'obtiens 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 indiquant à 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 à laquelle on se connecte de l'hôte certifié par SSL ?
0 votes
Votre équilibreur de charge est-il le point de terminaison SSL ou les instances individuelles ?
0 votes
Quelqu'un peut-il expliquer pourquoi l'en-tête Host ne sélectionne pas le bon VHost et le bon certificat sur le back-end pour HTTPS, alors que ce seul en HTTP fonctionne correctement. Le client transmet-il des informations au back-end (en utilisant le protocole HTTPS) pour savoir si l'IP a été utilisé ou le domaine ?
2 votes
@NeverEndingQueue Pour comprendre cela, vous devez connaître la relation entre TLS et HTTP. Le serveur a besoin de montrer le certificat avant d'avoir accès aux services suivants
Host
l'en-tête, donc--resolve
est la bonne façon d'épingler une adresse IP.