কোনও সার্ভার এইচটিটিপিএসের জন্য এসএনআই ব্যবহার করছে কিনা তা আমি কীভাবে সনাক্ত করতে পারি?


41

কোনও সার্ভার কোনও ওয়েবসাইটে এটির HTTPS শংসাপত্রের জন্য সার্ভার নেম ইন্ডিকেশন এসএসএল এক্সটেনশন ব্যবহার করছে কিনা তা জানার জন্য আমি একটি সহজ উপায় সন্ধান করছি। একটি পদ্ধতি যা ব্রাউজার বা ইউনিক্স কমান্ড লাইন ব্যবহার করে তা ভাল is

ধন্যবাদ!

উত্তর:


20

এসএনআই ক্লায়েন্ট দ্বারা সূচিত হয়েছিল, সুতরাং আপনার ক্লায়েন্ট দরকার যা এটি সমর্থন করে। আপনি উইন্ডোজ এক্সপি না থাকলে আপনার ব্রাউজারটি তা করবে। যদি আপনার ক্লায়েন্ট আপনাকে এসএসএল সংযোগগুলি সঠিকভাবে ডিবাগ করতে দেয় (দুর্ভাগ্যক্রমে, এমনকি গনটস / ওপেনসেল সি এল আই কমান্ডগুলিও না), আপনি দেখতে পারেন যে সার্ভারটি প্রসারিত হ্যালোতে কোনও সার্ভার_নাম ক্ষেত্রটি ফিরে পাঠায় কিনা। মনে রাখবেন যে এই ক্ষেত্রের অনুপস্থিতির অর্থ কেবল এই যে সার্ভারটি ক্লায়েন্ট হ্যালোতে একটি শংসাপত্র বাছাইয়ের জন্য সার্ভার_নাম ব্যবহার করে নি, এটি এটি সমর্থন করে না এমন নয়।

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

তিনটি ফলাফল রয়েছে:

  • আপনি একটি ওয়াইল্ডকার্ড শংসাপত্র পান (বা সাবজেক্টআল্টনেম সহ একটি) যা উভয় নামকে কভার করে: আপনি কিছুই শিখেন না
  • আপনি তাদের মধ্যে অন্তত একটির জন্য ভুল শংসাপত্র পান: হয় সার্ভার এসএনআই সমর্থন করে না বা এটি ভুল কনফিগার করা হয়েছে
  • সঠিক নামের জন্য আপনি দুটি পৃথক শংসাপত্র পান: এসএনআই সমর্থিত এবং সঠিকভাবে কনফিগার করা হয়েছে।

আরও কিছু জটিল পরীক্ষা যা আরও তথ্য দেবে তা হ'ল ব্রাউজ করার সময় ওয়্যারশার্ক খোলা এবং ক্যাপচার করা। তারপরে আপনি এসএসএল.হ্যান্ডশাকে ফিল্টার করে প্রাসঙ্গিক প্যাকেটগুলি সন্ধান করতে পারেন। নীচের স্ক্রিনশটগুলি ক্লায়েন্ট হ্যালো / সার্ভার হ্যালো জুটির উদাহরণ যেখানে এসএনআই সমর্থিত রয়েছে:

ক্লায়েন্ট হ্যালো সার্ভার হ্যালো

আবার, অবশ্যই হ্যালো সার্ভারে একটি সার্ভার_নাম ক্ষেত্রের অনুপস্থিতি ইঙ্গিত দেয় না যে এসএনআই সমর্থিত নয়। কেবলমাত্র যে শংসাপত্রটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার ক্ষেত্রে ক্লায়েন্ট-সরবরাহিত সার্ভার_নাম ব্যবহার করা হয়নি।


9
ডেনিস - একমত না openssl। কিছু বিবরণ উপলব্ধ: openssl s_client -servername alice.sni.velox.ch -tlsextdebug -msg -connect alice.sni.velox.ch:443এসএনআই ব্যবহারের কিছু ইঙ্গিত কোয়ালিজ এসএসএল পরীক্ষার সময় দেওয়া হয় ।
হরিণ হান্টার

আহ, আমি ম্যানপেজে মিস করেছি। সংযোজনের জন্য ধন্যবাদ।
ডেনিস কারসেমেকার

26

আপনি সম্ভবত যে কোনও লাইনার একটি এসএসএল / টিএলএস সার্ভারের নাম ইন্ডিকেশন এক্সটেনশন শিরোনামের উপস্থিতি সনাক্ত করতে সন্ধান করছেন তা হ'ল:

openssl s_client -servername www.SERVERNAME.com -tlsextdebug -connect www.YOURSERVER.com:443 2>/dev/null | grep "server name"

www.SERVERNAME.comআপনি যে এসএনআই মানটি পরীক্ষা করছেন তা কোথায় এবং আপনি যে www.YOURSERVER.comটিএলএস-সক্ষম সার্ভারটি পরীক্ষা করছেন তার ডোমেন নাম বা আইপি ঠিকানা।

কমান্ড লাইনটি পোর্টে সার্ভারের সাথে সংযোগ করতে openssls s_client( c_client (1) দেখুন ) ব্যবহার www.YOURSERVER.comকরে 443-tlsextdebugTLS এক্সটেনশন বিকল্পটি পালাক্রমে আউটপুট ডিবাগ। -servernameবিকল্প বলে s_clientপ্রোগ্রাম পাস www.SERVERNAME.comTLS এর হ্যান্ডশেক সময় ClientHello প্যাকেটে sni ক্ষেত্রের মান হিসাবে।

অবশেষে, 2>/dev/nullকেবল স্ট্যাডার আউটপুট (যা গোলমাল হতে পারে) আড়াল করে, এবং টিএলএস এক্সটেনশন ডিবাগিং আউটপুটে | grep "server name""সার্ভার নাম" নামক টিএলএস এক্সটেনশনটি প্রদর্শন করতে পাইপলাইন ফিল্টারগুলি স্টডআউট করে s_client

আপনি যদি আউটপুট একটি লাইন দেখতে পান

TLS server extension "server name" (id=0), len=0

তারপরে সার্ভারটি তার সার্ভারহেলো প্রতিক্রিয়াতে SNI শিরোনামের তথ্য ফিরিয়ে দিচ্ছে। যদি আপনি এটি না করেন তবে সার্ভারটি হয় এসএনআই সমর্থন করে না বা আপনি যে নামটি চাচ্ছেন তার নাম উল্লেখ করে এসএনআই তথ্য ফেরত দেওয়ার জন্য এটি কনফিগার করা হয়নি। এই ক্ষেত্রে, ডাবল-চেক করুন যে আপনি কোনও ডোমেন নামটি -servernameবিকল্পটিতে ব্যবহার করছেন যা সার্ভারের সম্পর্কে SNI সম্পর্কিত তথ্যের সাথে সাড়া দেওয়া উচিত।


1
আমি সঠিক ব্যবহার করি -servernameবা না করি আউটপুট একই । -servername sdfsdlkfjsdf23.somedomain.somewhere -connect realhost.somedomain.somewhere= TLS server extension "server name" (id=0), len=0(এবং যদি একইরকম আউটপুট তারা মেলে।) আপনি কীভাবে যাচাই করবেন যে এটি আউটপুট থেকে সার্ভারে কোনও হোস্টের সাথে মেলে না?
bshea

1
@ বিবিয়া আপনাকে -msgউপরের প্যারামিটারগুলি ছাড়াও পাস করতে হবে এবং "সতর্কতা " টির জন্য গ্রেপ করতে হবে । যদি -servernameভুলটি হয় তবে আপনি TLS 1.2 Alert ... warning unrecognized_nameসার্ভার থেকে এমন কিছু পাবেন । @ মিটার আমি মনে করি আপনি যদি এটির উত্তর যুক্ত করেন তবে অন্য লোকের পক্ষে এটি কার্যকর হবে।
ভিক্টর ননভ

@ ভিক্টরননভ -msgস্যুইচটি সহজভাবে টিএলএস প্রোটোকল বার্তা যুক্ত করে। এটি একটি টিএলএস হ্যান্ডশেক ত্রুটি পর্যবেক্ষণ করার প্রয়োজন হয় না, তাই এই উত্তর যুক্ত করা ভুল হবে। তদ্ব্যতীত, টিএলএস হ্যান্ডশেক এরর মতো ত্রুটিগুলি STDOUT এ মুদ্রিত হয়, যার অর্থ এই যে 2>/dev/nullএটির grepপ্রথম স্থানে প্রক্রিয়া করার জন্য উত্তরটি থেকে সরানো দরকার । @ বিবিয়া আসলে যা জিজ্ঞাসা করছে তা হ'ল "আমি কীভাবে টিএলএস ত্রুটিগুলি সনাক্ত করব?" "এই সার্ভারটি কি টিএলএস প্রোটোকলের এসএনআই বৈশিষ্ট্যটি ব্যবহার করে?" এই প্রশ্নের পুরোপুরি আলাদা প্রশ্ন? যা এখানে বিষয়।
মাইটার

@ মিটার, টিএলএস হ্যান্ডশেক ম্যাসেজগুলি পর্যবেক্ষণ করার জন্য আমি আর কোনও উপায় খুঁজে পাইনি। এমনকি আমি যদি STDERRকোনও পাঠ্য ফাইলে পুনর্নির্দেশ করি তবে আমি সেখানে ত্রুটিটি পাচ্ছি না। ছাড়া -msgআমি অন্য বিকল্পটি শো হ্যান্ডশেক বার্তা খুঁজে পাইনি। (ওপেনসেল ১.০.২ কি।) ব্যবহার করে। উত্তরের প্রাসঙ্গিকতা যতক্ষণ আপনি সঠিক হতে পারেন।
ভিক্টর ননভ

-2

আপনি opensslশংসাপত্র আনতে এবং জিজ্ঞাসা করতে ব্যবহার করতে পারেন ।

  • সাথে সার্ট আনুন openssl s_client -connect
  • শংসাপত্রটি পার্স করুন openssl x509
  • grep "ডিএনএস:" তথ্য সন্ধান করতে

openssl s_client -connect alice.sni.velox.ch:443 | openssl x509 -noout -text | grep DNS:

% openssl s_client -connect alice.sni.velox.ch:443 | openssl x509 -noout -text | grep DNS:
depth=2 C = BM, O = QuoVadis Limited, CN = QuoVadis Root CA 2
verify return:1
depth=1 C = BM, O = QuoVadis Limited, CN = QuoVadis Global SSL ICA G2
verify return:1
depth=0 C = CH, ST = Zuerich, L = Zuerich, O = Kaspar Brand, CN = alice.sni.velox.ch
verify return:1
                DNS:alice.sni.velox.ch, DNS:carol.sni.velox.ch

শেষ লাইনটি সার্টিফিকেটটিতে উপস্থিত সমস্ত এসএনআই এন্ট্রি দেখায়:

                DNS:alice.sni.velox.ch, DNS:carol.sni.velox.ch

আমি কি আউটপুট খুঁজছি? একাধিক ডোমেন উপস্থিত থাকার বিষয়টি কি?
spookylukey

DNS:... গত লাইনে এন্ট্রি সব শংসাপত্রে বৈধ sni নাম প্রদর্শন করুন।
স্পাজম

4
একটি সার্টিফিকেটে থাকা SAN এবং একটি সার্ভারে SNI সমর্থন হ'ল আলাদা জিনিস, এইচটিটিপিএস ভার্চুয়ালহোস্টিংয়ের জন্য স্যানগুলির ব্যবহার হ্যাকের কিছু যা এসএনআইকে পূর্বাভাস দেয়। এসএনআই-এর জন্য আপনার SAN এর সাথে শংসাপত্রের দরকার নেই কারণ সার্ভারটি স্বতন্ত্র শংসাপত্র নির্বাচন করতে সক্ষম যা ক্লায়েন্টদের নাম প্রত্যাশার সাথে মেলে।
মিঃ স্পুর্যাটিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.