httpie ssl সার্টিফিকেট সঙ্গে খারাপ হ্যান্ডশেক ত্রুটি


1

আমি আমার স্থানীয় মেশিনে আমার Django ব্যাকেন্ড চালাচ্ছি এবং এটির সাথে সংযোগ করার চেষ্টা করছি HTTPie( https://httpie.org/ )।

যখন আমি python manage.py runsslserverএটি চালানো এই আউটপুট দেয়:

Starting development server at https://127.0.0.1:8000/
Using SSL certificate: //anaconda/lib/python3.6/site-packages/sslserver/certs/development.crt
Using SSL key: //anaconda/lib/python3.6/site-packages/sslserver/certs/development.key
Quit the server with CONTROL-C.

যখন আমি সেই সার্টিফিকেট এবং ডকুমেন্টেশন অনুসারে কী ব্যবহার করে স্থানীয় হোস্টে সংযোগ করার চেষ্টা করি :

http --cert=//anaconda/lib/python3.6/site-packages/sslserver/certs/development.crt --cert-key=//anaconda/lib/python3.6/site-packages/sslserver/certs/development.key https://127.0.0.1:8000/

আমি একটি খারাপ হ্যান্ডশেক ত্রুটি পেতে:

http: error: SSLError: ("bad handshake: Error([('SSL 
routines','ssl3_get_server_certificate', 'certificate verify 
failed')],)",) while doing GET request to URL: https://127.0.0.1:8000/

কেন এটা সংযোগ করা হয় না?


আপনি কি "httpie" দ্বারা ঠিক কি মানে?
রামহাউন্ড

@ রামহাউন্ড httpie.org আমি ভেবেছিলাম এটি HTTP অনুরোধ পাঠানোর জন্য একটি সুপরিচিত সরঞ্জাম। অধিকাংশ মানুষ কি জানবে না এটা কি?
ম্যাট ডি

আমি ভেবেছিলাম তুমি কীভাবে বানিয়েছো http........
রামহাউন্ড

উত্তর:


2

আপনি সংযুক্ত HTTPT ডকুমেন্টেশনের উপর ভিত্তি করে, মনে হচ্ছে আপনি httpসঠিকভাবে কমান্ড ব্যবহার করছেন না । --certএবং -cert-keyঅপশন আপনার দ্বারা নির্দিষ্ট করা (উদাহরণস্বরূপ, একটি API টোকেন স্থানে) ক্লায়েন্ট শংসাপত্র প্রমাণীকরণের জন্য হয়। আমি নিশ্চিত হতে পারছি না, কিন্তু আমি অনুমান করছি যে আপনি ক্লায়েন্ট শংসাপত্র প্রমাণীকরণ ব্যবহার করছেন না।

আপনি স্ব স্বাক্ষরিত SSL শংসাপত্রের কাছে অনুমান করছেন //anaconda/lib/python3.6/site-packages/sslserver/certs/development.crt, আপনার দুটি প্রধান বিকল্প রয়েছে:

একটি CA হিসাবে স্ব স্বাক্ষর সার্টিফিকেট চিকিত্সা

দ্রষ্টব্য: আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে আপনার কাছে সঠিক শংসাপত্র আছে, অথবা আপনি নীচের দ্বিতীয় বিকল্প হিসাবে একই সমস্যাগুলি ঝুঁকিপূর্ণ

http --verify=//anaconda/lib/python3.6/site-packages/sslserver/certs/development.crt https://127.0.0.1:8000/

বা, সঙ্গে wgetবা curl:

curl --cacert //anaconda/lib/python3.6/site-packages/sslserver/certs/development.crt https://127.0.0.1:8000/
wget --ca-certificate=//anaconda/lib/python3.6/site-packages/sslserver/certs/development.crt https://127.0.0.1:8000/

এসএসএস বৈধতা উপেক্ষা করুন

দ্রষ্টব্য: এই পদ্ধতিটি এখনও আপনার ডেটা এনক্রিপ্ট করবে , তবে রিমোট এন্ডপয়েন্টকে যাচাই করার কোনও প্রচেষ্টা করবেন না (অর্থাত আপনি ডেটা এনক্রিপ্ট করতে এবং এটি আক্রমণকারীকে পাঠাতে পারেন)। অতএব, এই উত্পাদন ব্যবহারের জন্য প্রস্তাব করা হয় না

http --verify=no https://127.0.0.1:8000/

এছাড়াও, মনে রাখবেন যে অন্যান্য, আরও সাধারণভাবে ব্যবহৃত কমান্ড-লাইন http ক্লায়েন্ট রয়েছে:

curl -k https://127.0.0.1:8000/
wget --no-check-certificate https://127.0.0.1:8000/

এর এনক্রিপ্ট করা যাক

অবশেষে, আপনি একটি বৈধ SSL সার্টিফিকেট পেতে বিবেচনা করা হতে পারে। এর এনক্রিপ্টটি বিনামূল্যে তাদের অফার করে এবং আপনি অন্য কাউকে কিছু দিতে চাইলে অনেকগুলি CA রয়েছে যা আপনি বিবেচনা করতে পারেন। একটি বৈধ SSL শংসাপত্র (এবং একটি বৈধ DNS নাম) সহ, উল্লিখিত কোনও ক্লায়েন্টগুলিতে অতিরিক্ত বিকল্পগুলির প্রয়োজন নেই।


আমি কীভাবে নিশ্চিত হতে পারি যে আমি সঠিক শংসাপত্র ব্যবহার করছি?
ম্যাট ডি

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