প্রদত্ত আইপি ঠিকানার সাথে কীভাবে এইচটিটিপিএস ইউআরএল পরীক্ষা করতে হয়


77

ধরা যাক কোনও ওয়েবসাইট বেশ কয়েকটি সার্ভারের মধ্যে লোড-ভারসাম্যযুক্ত। আমি কাজ করে কিনা যেমন পরীক্ষা করার জন্য একটি কমান্ড চালাতে চাই curl DOMAIN.TLD। সুতরাং, প্রতিটি আইপি ঠিকানা বিচ্ছিন্ন করতে, আমি আইপি ম্যানুয়ালি নির্দিষ্ট করি। কিন্তু অনেক ওয়েবসাইট সার্ভারে হোস্ট করা হতে পারে, তাই আমি এখনও এই মত, একটি হোস্ট শীর্ষক প্রদান: curl IP_ADDRESS -H 'Host: DOMAIN.TLD'। আমার বুঝতে হিসাবে, এই দুটি কমান্ড ঠিক একই HTTP অনুরোধ তৈরি করে। পার্থক্যটি হ'ল পরেরটিতে আমি সিআরএল থেকে ডিএনএস লিকুয়িং অংশটি বের করি এবং এটি নিজেই করি (দয়া করে আমি ভুল হলে আমাকে সংশোধন করুন)।

এখন পর্যন্ত সব ঠিক আছে। তবে এখন আমি এইচটিটিপিএস ইউআরএল একই করতে চাই। আবার, আমি এটি পরীক্ষা করতে পারে curl https://DOMAIN.TLD। তবে আমি নিজে আইপি নির্দিষ্ট করতে চাই, তাই আমি চালাচ্ছি curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'। এখন আমি একটি সিআরএল ত্রুটি পেয়েছি:

curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'.

আমি অবশ্যই সিআরএলকে শংসাপত্রের ("-কে" বিকল্প) সম্পর্কে যত্ন না দেওয়ার কথা বলার মাধ্যমে বলতে পারি তবে এটি আদর্শ নয়।

এসএসএল দ্বারা প্রত্যয়িত হোস্ট থেকে আইপি ঠিকানা সংযুক্ত হওয়ার কোনও উপায় কি আছে?


আপনার ভারসাম্যটি কি এসএসএল সমাপ্তি পয়েন্ট, বা এটি পৃথক উদাহরণস্বরূপ?
রিকোলা

হোস্ট শিরোনাম কেন HTTPS এর ব্যাক-এন্ডে সঠিক ভিহস্ট এবং শংসাপত্রটি নির্বাচন করে না তা ব্যাখ্যা করতে পারে তবে এইচটিটিপি-র একাকী ঠিক আছে। ক্লায়েন্ট কি আইপি ব্যবহার করেছিল বা ডোমেন কিনা ব্যাক-এন্ডে (এইচটিটিপিএস প্রোটোকল ব্যবহার করে) তথ্য সরবরাহ করে?
নেভেনডিংকিউ

@ নেভারএন্ডিংকুইউ এটি বুঝতে আপনার টিএলএস এবং এইচটিটিপি এর মধ্যে সম্পর্ক সম্পর্কে জানতে হবে। সার্ভারের Hostশিরোনামটি শিরোনামের আগে শিরোনামটি দেখাতে হবে , --resolveআইপি ঠিকানাটি পিন করার সঠিক উপায়।
ফ্রাঙ্কলিন ইউ

উত্তর:


117

ভাবুন যে আমি সিআরএল ম্যানুয়ালটিতে গিয়ে একটি সমাধান পেয়েছি:

curl https://DOMAIN.EXAMPLE --resolve 'DOMAIN.EXAMPLE:443:192.0.2.17'

[কার্ল] 7.21.3 এ যুক্ত হয়েছে। অপসারণ সমর্থন 7.42.0 এ যোগ করা হয়েছে।

CURLOPT_RESOLVE থেকে ব্যাখ্যা করা হয়েছে


1
--resolve doe কার্লে নেই ...
JustAGuy

7
আমার মেশিনে কার্লের (7.27.0) --resolve রয়েছে।
থেরন লুহন

আপনি এটি ব্যবহার করে কাজ curl -vকরতে দেখতে পারেন এবং আপনি দেখতে পাচ্ছেন যে কার্লটি ডিএনএস ক্যাশে অস্থায়ীতায় সমাধানের বিকল্পটি যুক্ত করে এবং আপনার নির্দিষ্ট আইপি ঠিকানাটি যুক্ত করে।
সিএমসিডিগ্রাগনকাই

CentOS 6.8 কার্ল: বিকল্প --resolve: অজানা কার্ল: আরও তথ্য রুট @ সার্ভার 3 এর জন্য 'কার্ল --help' বা 'কার্ল - মানুয়াল' চেষ্টা করুন [~] # কার্ল -V কার্ল 7.19.7 (x86_64-redhat-linux -gnu) libcurl / 7.19.7 এনএসএস / 3.21 বেসিক ইসিসি zlib / 1.2.3 লিবিডন / 1.18 libssh2 / 1.4.2 প্রোটোকল: tftp ftp টেলনেট ডিক্ট ldap ldaps HTTP ফাইল https ftps স্কিপ sftp বৈশিষ্ট্য: জিএসএস-নেগোসিয়েট আইডিএন আইপিটিএলএমএস এনএসটিএল libz
জোস

মনে রাখবেন যে আপনি যদি হোস্টনাম ব্যবহার করেন তবে IP_ADDRESSএটি চুপচাপ বিকল্পটিকে উপেক্ষা করবে।
জিওনগ চিআমিভ 19

11

আপনি সার্ভারটিকে / আইপি / হোস্টগুলিতে পরিবর্তন করতে পারেন যাতে ডোমেইনটি একটি নির্দিষ্ট আইপিতে অবস্থিত think

এটি সিনট্যাক্স:

192.168.10.20 www.domain.tld

এটি সিআরএলকে এসএসএল-শংসাপত্র বিচ্ছিন্ন না করে আপনি চান আইপি-ঠিকানাটি ব্যবহার করবেন make


4
এটি কাজ করে, তবে আমি এমন একটি পদ্ধতির দিকে নজর দিচ্ছি যার জন্য ওএসকে সামগ্রিকভাবে সংশোধন করার প্রয়োজন নেই
মার্টিন

আমি সত্যই মনে করি না এর অন্য কোনও উপায় আছে। শংসাপত্রের কাজ করার জন্য সঠিক ডোমেন-নাম অ্যাক্সেস করতে আপনাকে অবশ্যই সিআরএল পেতে হবে এবং একটি আইপিতে একটি নির্দিষ্ট ডোমেন ম্যাপ করার উপায়টি হয় ডিএনএস বা হোস্ট-ফাইলের মাধ্যমে।
মিয়ানো

7

manবর্তমানে সর্বাধিক উত্সাহিত উত্তরের জন্য এন্ট্রি এখানে দেওয়া হয়েছে যেহেতু তারা কেবল প্রোগ্রামমেটিক উপাদানটির একটি লিঙ্ক অন্তর্ভুক্ত করেছে:

--resolve <host:port:address>

    Provide  a  custom  address  for  a specific host and port pair. Using
    this, you can make the curl requests(s) use a specified address and 
    prevent the otherwise normally resolved address to be used. Consider 
    it a sort of /etc/hosts alternative provided on the command line. 
    The port number should be the number used for the specific protocol 
    the host will be used for. It means you need several entries if you 
    want to provide address for the same host but different ports.

    The provided address set by this option will be used even if -4, 
    --ipv4 or -6, --ipv6 is set to make curl use another IP version.

    This option can be used many times to add many host names to resolve.

    Added in 7.21.3.

তবে প্রদত্ত সীমাবদ্ধতার কারণে ("এর অর্থ আপনি যদি একই হোস্টের জন্য তবে বিভিন্ন পোর্টের জন্য ঠিকানা সরবরাহ করতে চান তবে আপনার বেশ কয়েকটি এন্ট্রি প্রয়োজন need"), আমি আরেকটি নতুন বিকল্প বিবেচনা করব যা একই সাথে উভয়কে অনুবাদ করতে পারে:

--connect-to <HOST1:PORT1:HOST2:PORT2>

    For  a request to the given HOST:PORT pair, connect to 
    CONNECT-TO-HOST:CONNECT-TO-PORT instead. This option is suitable 
    to direct requests at a specific server, e.g. at a specific cluster 
    node in a cluster of servers. This option is only used to establish 
    the network connection. It does NOT affect the hostname/port that 
    is used for TLS/SSL (e.g. SNI, certificate verification) or for 
    the application protocols. "host" and "port" may be the empty string, 
    meaning "any host/port". "connect-to-host" and "connect-to-port" 
    may also be the empty string, meaning "use the request's original host/port".

    This option can be used many times to add many connect rules.

    See also --resolve and -H, --header. 
    Added in 7.49.0.

4

আপনি যদি উইন্ডোজে কার্ল চালাচ্ছেন তবে ডাবল উদ্ধৃতি ব্যবহার করুন

curl https://DOMAIN.TLD --resolve "DOMAIN.TLD:443:IP_ADDRESS"

curl DOMAIN.TLD --resolve "DOMAIN.TLD:80:IP_ADDRESS"

আপনি স্কিম / প্রোটোকলকে সামনে রেখে যেতে পারেন তবে আপনি --resolve স্ট্রিংয়ে পোর্ট নম্বরটি এড়িয়ে যেতে পারবেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.