Załóżmy, że witryna jest zrównoważona pod względem obciążenia między kilkoma serwerami. Chcę uruchomić polecenie, aby sprawdzić, czy działa, np curl DOMAIN.TLD
. Tak więc, aby wyizolować każdy adres IP, określam adres IP ręcznie. Ale wiele stron internetowych, mogą być przechowywane na serwerze, więc nadal stanowią nagłówek hosta, na przykład: curl IP_ADDRESS -H 'Host: DOMAIN.TLD'
. W moim rozumieniu te dwa polecenia tworzą dokładnie to samo żądanie HTTP. Jedyną różnicą jest to, że w tym drugim wyjmuję część wyszukiwania DNS z cURL i robię to ręcznie (popraw mnie, jeśli się mylę).
Jak dotąd dobrze. Ale teraz chcę zrobić to samo dla adresu URL HTTPS. Znów mogłem to przetestować w ten sposób curl https://DOMAIN.TLD
. Ale chcę ręcznie podać adres IP, więc uruchamiam curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'
. Teraz pojawia się błąd cURL:
curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'.
Mogę oczywiście obejść ten problem, mówiąc cURL, aby nie przejmował się certyfikatem (opcja „-k”), ale nie jest to idealne rozwiązanie.
Czy istnieje sposób odizolowania podłączonego adresu IP od hosta certyfikowanego przez SSL?
Host
nagłówka, więc--resolve
jest to właściwy sposób na przypięcie adresu IP.Odpowiedzi:
Myślę, że znalazłem rozwiązanie w podręczniku cURL:
z CURLOPT_RESOLVE wyjaśnione
źródło
curl -v
i możesz zauważyć, że curl dodaje opcję rozwiązywania do tymczasowej pamięci podręcznej DNS i dodaje korzysta z określonego adresu IP.IP_ADDRESS
, po cichu zignoruje tę opcję.Możesz zmienić / etc / hosts, aby serwer myślał, że domena znajduje się pod określonym adresem IP.
Oto składnia:
Spowoduje to, że cURL użyje żądanego adresu IP bez konieczności złamania certyfikatu SSL.
źródło
Oto
man
wpis dla obecnie najbardziej uprzywilejowanej odpowiedzi, ponieważ zawierał tylko link do komponentu programowego:Ale ze względu na podane ograniczenie („Oznacza to, że potrzebujesz kilku wpisów, jeśli chcesz podać adres dla tego samego hosta, ale różnych portów.”), Rozważyłbym inną, nowszą opcję, która może tłumaczyć oba jednocześnie:
źródło
Jeśli używasz curl w Windows, użyj podwójnych cudzysłowów
Możesz pominąć schemat / protokół z góry, ale nie możesz pominąć numeru portu w ciągu --resolve.
źródło