কোনও সার্ভার কোনও ওয়েবসাইটে এটির HTTPS শংসাপত্রের জন্য সার্ভার নেম ইন্ডিকেশন এসএসএল এক্সটেনশন ব্যবহার করছে কিনা তা জানার জন্য আমি একটি সহজ উপায় সন্ধান করছি। একটি পদ্ধতি যা ব্রাউজার বা ইউনিক্স কমান্ড লাইন ব্যবহার করে তা ভাল is
ধন্যবাদ!
কোনও সার্ভার কোনও ওয়েবসাইটে এটির HTTPS শংসাপত্রের জন্য সার্ভার নেম ইন্ডিকেশন এসএসএল এক্সটেনশন ব্যবহার করছে কিনা তা জানার জন্য আমি একটি সহজ উপায় সন্ধান করছি। একটি পদ্ধতি যা ব্রাউজার বা ইউনিক্স কমান্ড লাইন ব্যবহার করে তা ভাল is
ধন্যবাদ!
উত্তর:
এসএনআই ক্লায়েন্ট দ্বারা সূচিত হয়েছিল, সুতরাং আপনার ক্লায়েন্ট দরকার যা এটি সমর্থন করে। আপনি উইন্ডোজ এক্সপি না থাকলে আপনার ব্রাউজারটি তা করবে। যদি আপনার ক্লায়েন্ট আপনাকে এসএসএল সংযোগগুলি সঠিকভাবে ডিবাগ করতে দেয় (দুর্ভাগ্যক্রমে, এমনকি গনটস / ওপেনসেল সি এল আই কমান্ডগুলিও না), আপনি দেখতে পারেন যে সার্ভারটি প্রসারিত হ্যালোতে কোনও সার্ভার_নাম ক্ষেত্রটি ফিরে পাঠায় কিনা। মনে রাখবেন যে এই ক্ষেত্রের অনুপস্থিতির অর্থ কেবল এই যে সার্ভারটি ক্লায়েন্ট হ্যালোতে একটি শংসাপত্র বাছাইয়ের জন্য সার্ভার_নাম ব্যবহার করে নি, এটি এটি সমর্থন করে না এমন নয়।
সুতরাং, অনুশীলনে সহজতম পরীক্ষাটি কেবল সংযোগের চেষ্টা করা। এর জন্য আপনার দুটি নাম জানতে হবে যা একই আইপি থেকে সমাধান করে, যার সাথে এসএসএল সংযোগ করা যায়। আপনি কেবলমাত্র দুটি নাম ব্রাউজ করতে পারেন এবং আপনাকে সঠিক শংসাপত্রের সাথে উপস্থাপন করা হয়েছে কিনা তা দেখতে https সবচেয়ে সহজ।
তিনটি ফলাফল রয়েছে:
আরও কিছু জটিল পরীক্ষা যা আরও তথ্য দেবে তা হ'ল ব্রাউজ করার সময় ওয়্যারশার্ক খোলা এবং ক্যাপচার করা। তারপরে আপনি এসএসএল.হ্যান্ডশাকে ফিল্টার করে প্রাসঙ্গিক প্যাকেটগুলি সন্ধান করতে পারেন। নীচের স্ক্রিনশটগুলি ক্লায়েন্ট হ্যালো / সার্ভার হ্যালো জুটির উদাহরণ যেখানে এসএনআই সমর্থিত রয়েছে:
আবার, অবশ্যই হ্যালো সার্ভারে একটি সার্ভার_নাম ক্ষেত্রের অনুপস্থিতি ইঙ্গিত দেয় না যে এসএনআই সমর্থিত নয়। কেবলমাত্র যে শংসাপত্রটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার ক্ষেত্রে ক্লায়েন্ট-সরবরাহিত সার্ভার_নাম ব্যবহার করা হয়নি।
আপনি সম্ভবত যে কোনও লাইনার একটি এসএসএল / টিএলএস সার্ভারের নাম ইন্ডিকেশন এক্সটেনশন শিরোনামের উপস্থিতি সনাক্ত করতে সন্ধান করছেন তা হ'ল:
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
টিএলএস-সক্ষম সার্ভারটি পরীক্ষা করছেন তার ডোমেন নাম বা আইপি ঠিকানা।
কমান্ড লাইনটি পোর্টে সার্ভারের সাথে সংযোগ করতে openssl
s s_client
( c_client (1) দেখুন ) ব্যবহার www.YOURSERVER.com
করে 443
। -tlsextdebug
TLS এক্সটেনশন বিকল্পটি পালাক্রমে আউটপুট ডিবাগ। -servername
বিকল্প বলে s_client
প্রোগ্রাম পাস www.SERVERNAME.com
TLS এর হ্যান্ডশেক সময় ClientHello প্যাকেটে sni ক্ষেত্রের মান হিসাবে।
অবশেষে, 2>/dev/null
কেবল স্ট্যাডার আউটপুট (যা গোলমাল হতে পারে) আড়াল করে, এবং টিএলএস এক্সটেনশন ডিবাগিং আউটপুটে | grep "server name"
"সার্ভার নাম" নামক টিএলএস এক্সটেনশনটি প্রদর্শন করতে পাইপলাইন ফিল্টারগুলি স্টডআউট করে s_client
।
আপনি যদি আউটপুট একটি লাইন দেখতে পান
TLS server extension "server name" (id=0), len=0
তারপরে সার্ভারটি তার সার্ভারহেলো প্রতিক্রিয়াতে SNI শিরোনামের তথ্য ফিরিয়ে দিচ্ছে। যদি আপনি এটি না করেন তবে সার্ভারটি হয় এসএনআই সমর্থন করে না বা আপনি যে নামটি চাচ্ছেন তার নাম উল্লেখ করে এসএনআই তথ্য ফেরত দেওয়ার জন্য এটি কনফিগার করা হয়নি। এই ক্ষেত্রে, ডাবল-চেক করুন যে আপনি কোনও ডোমেন নামটি -servername
বিকল্পটিতে ব্যবহার করছেন যা সার্ভারের সম্পর্কে SNI সম্পর্কিত তথ্যের সাথে সাড়া দেওয়া উচিত।
-servername
বা না করি আউটপুট একই । -servername sdfsdlkfjsdf23.somedomain.somewhere -connect realhost.somedomain.somewhere
= TLS server extension "server name" (id=0), len=0
(এবং যদি একইরকম আউটপুট তারা মেলে।) আপনি কীভাবে যাচাই করবেন যে এটি আউটপুট থেকে সার্ভারে কোনও হোস্টের সাথে মেলে না?
-msg
উপরের প্যারামিটারগুলি ছাড়াও পাস করতে হবে এবং "সতর্কতা " টির জন্য গ্রেপ করতে হবে । যদি -servername
ভুলটি হয় তবে আপনি TLS 1.2 Alert ... warning unrecognized_name
সার্ভার থেকে এমন কিছু পাবেন । @ মিটার আমি মনে করি আপনি যদি এটির উত্তর যুক্ত করেন তবে অন্য লোকের পক্ষে এটি কার্যকর হবে।
-msg
স্যুইচটি সহজভাবে টিএলএস প্রোটোকল বার্তা যুক্ত করে। এটি একটি টিএলএস হ্যান্ডশেক ত্রুটি পর্যবেক্ষণ করার প্রয়োজন হয় না, তাই এই উত্তর যুক্ত করা ভুল হবে। তদ্ব্যতীত, টিএলএস হ্যান্ডশেক এরর মতো ত্রুটিগুলি STDOUT এ মুদ্রিত হয়, যার অর্থ এই যে 2>/dev/null
এটির grep
প্রথম স্থানে প্রক্রিয়া করার জন্য উত্তরটি থেকে সরানো দরকার । @ বিবিয়া আসলে যা জিজ্ঞাসা করছে তা হ'ল "আমি কীভাবে টিএলএস ত্রুটিগুলি সনাক্ত করব?" "এই সার্ভারটি কি টিএলএস প্রোটোকলের এসএনআই বৈশিষ্ট্যটি ব্যবহার করে?" এই প্রশ্নের পুরোপুরি আলাদা প্রশ্ন? যা এখানে বিষয়।
STDERR
কোনও পাঠ্য ফাইলে পুনর্নির্দেশ করি তবে আমি সেখানে ত্রুটিটি পাচ্ছি না। ছাড়া -msg
আমি অন্য বিকল্পটি শো হ্যান্ডশেক বার্তা খুঁজে পাইনি। (ওপেনসেল ১.০.২ কি।) ব্যবহার করে। উত্তরের প্রাসঙ্গিকতা যতক্ষণ আপনি সঠিক হতে পারেন।
আপনি 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
DNS:...
গত লাইনে এন্ট্রি সব শংসাপত্রে বৈধ sni নাম প্রদর্শন করুন।
openssl
। কিছু বিবরণ উপলব্ধ:openssl s_client -servername alice.sni.velox.ch -tlsextdebug -msg -connect alice.sni.velox.ch:443
এসএনআই ব্যবহারের কিছু ইঙ্গিত কোয়ালিজ এসএসএল পরীক্ষার সময় দেওয়া হয় ।