আমি কোনও পরিচিত সিএর বিরুদ্ধে এটি যাচাই করার প্রয়োজন ছাড়াই কীভাবে আমি অ্যাপাচি ক্লায়েন্ট এসএসএল শংসাপত্রের জন্য অনুরোধ করতে পারি?


9

আমি এমন কোনও সাইট পরিবেশন করতে apache2 (2.2.3) ব্যবহার করছি যেখানে আমি ক্লায়েন্টদের শংসাপত্র দিয়ে প্রমাণীকরণ করতে চাই have যেহেতু আমাকে কেবল যাচাই করা দরকার যে কোনও নির্দিষ্ট শংসাপত্র উপস্থাপনকারী একজন ব্যবহারকারী একই ব্যক্তি যিনি অতীতে সেই শংসাপত্রটি উপস্থাপন করেছেন, তাই শংসাপত্রে স্বাক্ষর করা সিএ অপ্রাসঙ্গিক। যদিও মনে হয়, (অথবা ) ব্যবহারের SSLVerifyClient requireপ্রয়োজন হয় এবং তারপরে অ্যাপাচি কেবল সেই ফাইল / পাথের কোনও সিএ স্বাক্ষরিত শংসাপত্র গ্রহণ করবে। সিএ জারি / গাওয়া নির্বিশেষে কোনও ক্লায়েন্টের শংসাপত্র গ্রহণের জন্য অ্যাপাচি পাওয়ার কোনও উপায় আছে কি? (অর্থাত্ ক্লায়েন্টের উপস্থাপিত সার্বজনীন কীতে সংশ্লিষ্ট প্রাইভেট কী রয়েছে তা যাচাই করুন, তবে সিএ ইস্যু / সই করা যাচাই করে বিরক্ত করবেন না)SSLCACertificateFile ...SSLCACertificatePath ...


কোন শংসাপত্রগুলি প্রমাণীকরণ করেছে তা ট্র্যাক করার বিষয়ে আপনি কীভাবে পরিকল্পনা করবেন?
শেন ম্যাডেন

@ শানেমডেন: অভ্যন্তরীণ ব্যবহারকারীর আইডিগুলিতে একটি টেবিল ম্যাপিং শংসাপত্রের মতো কিছু। পাবলিক-কী ক্রিপ্টোগ্রাফির যান্ত্রিকাগুলি একটি পাসওয়ার্ড এক্সচেঞ্জের স্থান গ্রহণ করবে।
আইজাক

2
ডান - কি আমি পেয়ে করছি যে অ্যাপাচি না কি অভ্যন্তরীণ ব্যবহারকারীর ID- র জন্য একটি টেবিল ম্যাপিং সার্টিফিকেট। আপনি যদি ক্লায়েন্ট শংসাপত্রের সাথে ব্যবহারকারীদের প্রমাণীকরণ করতে চলেছেন তবে আপনি স্বাক্ষরিত ব্যবহারকারীদের শংসাপত্রগুলি দেবেন না কেন? আপনি যেমনটি উল্লেখ করেছেন, সেখানে ওপেনআইডি সরবরাহকারীরা আছেন যাঁরা ঠিক তা করেন। অ্যাপাচি এর mod_sslশংসাপত্র স্বাক্ষরকারী সম্পর্কের ভিত্তিতে ব্যবহারকারীদের প্রমাণীকরণের জন্য ডিজাইন করা হয়েছিল; যদি আপনি কোনও কারণে এটিকে অগ্রাহ্য করতে চান তবে আপনার নিজের কোডটিতে শংসাপত্র প্রমাণীকরণ কার্যকর করতে হবে যা আপনার শংসাপত্রের সাথে ব্যবহারকারীর ম্যাপিংও পরিচালনা করছে।
শেন ম্যাডেন

@ শানেম্যাডেন: আমি শংসাপত্র প্রদান করা এড়াতে আশা করছিলাম এবং যদি আমি কেবলমাত্র জারি করা শংসাপত্রগুলি গ্রহণ করি তবে স্মার্টকার্ড ভিত্তিক শংসাপত্রগুলি বাইরে যায়। আমি যাই করি না কেন, সিস্টেমের কিছু অংশ অ্যাপ্লিকেশন পর্যায়ে জায়গা করে নিতে চলেছে, তবে যেহেতু সেখানে সমস্ত mod_sslযন্ত্রপাতি রয়েছে, তাই আমি আশাবাদী যে এটি আমার জন্য কিছু কাজের যত্ন নিতে পারে।
আইজাক

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

উত্তর:


10

যেমনটি আপনি পেয়েছেন, আপনি অ্যাপাচি এইচটিপিপি-র মধ্যে SSL / TLS হ্যান্ডশেক স্তরে শংসাপত্র যাচাইকরণ অক্ষম করতে পারেন SSLVerifyCLient optional_no_ca

আপনি যে দ্বিতীয় সমস্যার মুখোমুখি হতে যাচ্ছেন সেটি হ'ল ক্লায়েন্টকে শংসাপত্রটি প্রেরণ করা। যেহেতু আপনার শংসাপত্রটি কোনও পিকেআই-র অন্তর্ভুক্ত নয়, সেগুলি স্ব-স্বাক্ষরিত হতে পারে এবং বিভিন্ন ইস্যুকারী থাকতে পারে।

ক্লায়েন্ট-শংসাপত্রের জন্য অনুরোধ করার সময়, সার্ভার হ্যান্ডহ্যাসকের সময় ক্লায়েন্টকে একটি CertificateRequestটিএলএস বার্তা প্রেরণ করে। এই বার্তায় certificate_authoritiesতালিকা রয়েছে :

গ্রহণযোগ্য শংসাপত্র কর্তৃপক্ষের বিশিষ্ট নামের একটি তালিকা। এই বিশিষ্ট নামগুলি মূল সিএ বা অধীনস্থ সিএর জন্য একটি পছন্দসই বিশিষ্ট নাম নির্দিষ্ট করতে পারে; সুতরাং, এই বার্তাটি উভয় জ্ঞাত শিকড় এবং একটি পছন্দসই অনুমোদনের স্থান বর্ণনা করতে ব্যবহার করা যেতে পারে। যদি সার্টিফিকেট_অর্থরিটিজগুলি তালিকা খালি থাকে তবে বিপরীতে কিছু বাহ্যিক ব্যবস্থা না থাকলে ক্লায়েন্ট মায়া যথাযথ ক্লায়েন্টের্টিফিকেট টাইপের যে কোনও শংসাপত্র প্রেরণ করে।

কোন ক্লায়েন্ট শংসাপত্র প্রেরণ করতে হবে তা চয়ন করতে ব্রাউজারগুলি এটি ব্যবহার করে (যদি থাকে)।

(নোট করুন যে খালি তালিকার অংশটি কেবলমাত্র টিএলএস 1.1 থেকে নির্দিষ্টকরণের মধ্যে রয়েছে SSL এসএসএল 3.0 এবং টিএলএস 1.0 এ সম্পর্কে নীরব রয়েছে, এবং বাস্তবে এটি কাজ করবে))

আপনি এটির জন্য দুটি বিকল্প পান।

  • আপনি যে ক্লায়েন্টের শংসাপত্রের প্রত্যাশা করেছেন তা যদি স্ব-স্বাক্ষরিত হতে চলেছে তবে তাদের সকলের আলাদা আলাদা ইস্যুকারী থাকবে। আপনি কী আশা করবেন তা জানেন না বলে সার্ভারকে একটি খালি তালিকা প্রেরণ করতে হবে। এটি করার জন্য, SSLCADNRequestFileনির্দেশটি ব্যবহার করুন এবং এটি একটি ফাইলের দিকে নির্দেশ করুন যাতে খালি লাইন থাকে (যদি আমি ভাল করে মনে করি তবে এটি সম্পূর্ণ খালি ফাইলের সাথে কাজ করে না)।

  • দ্বিতীয় (কম পরিষ্কার) বিকল্প। আপনি যে ক্লায়েন্ট শংসাপত্রের প্রত্যাশা করছেন সেগুলির সাথে সাধারণ ইস্যুয়ার ডিএন-এর সাথে একমত হবেন, সেগুলি সত্যই সেই সিএ সার্টিফিকেট দ্বারা জারি করা হয়েছে কিনা (বা সিএ এমনকি রয়েছে কিনা তাও নয়)। এটি করে আপনি পিকেআই মডেলটিকে যথেষ্ট পরিমাণে (আরও) ভেঙে ফেলবেন।

    আপনি যদি ইস্যুয়ার ডিএন এর মত সম্মত হন CN=Dummy CA(উদাহরণস্বরূপ)। যে কেউ CN=Dummy CAসম্ভবত সাবজেক্ট ডিএন (এবং ইস্যুয়ার ডিএন) হিসাবে সম্ভবত বিভিন্ন কী ব্যবহার করে একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করতে পারেন । যদিও SSLCADNRequestFileনির্দেশিকাটি তালিকাটি তৈরির জন্য শংসাপত্রগুলির সাথে কনফিগার করা প্রত্যাশা করে, এগুলি ক্লায়েন্ট-শংসাপত্রটি যাচাই করতে মোটেই ব্যবহৃত হয় না, এটি তালিকাটি কনফিগার করার পদ্ধতিটি কেবল একটি জটিল (তবে অন্যান্য নির্দেশের প্রসঙ্গে প্রাকৃতিক) certificate_authorities। আপনি যদি কোনও পরিষেবা হিসাবে এই নামের সাথে স্ব-স্বাক্ষরিত শংসাপত্র রাখেন তবে SSLCADNRequestFileএটি CertificateRequestটিএলএস বার্তাটিকে তালিকায় ব্যবহার CN=Dummy CAকরবে certificate_authorities(এগুলি কেবলমাত্র নাম, এই পর্যায়ে শংসাপত্র নয়)। ক্লায়েন্ট তার পরে ইস্যুয়ার ডিএন এর সাথে নিজস্ব শংসাপত্র তুলতে সক্ষম হবেCN=Dummy CA, তার স্বাক্ষর সেই শংসাপত্র (একই কীগুলি) দ্বারা যাচাই করা যায় কি না, যেহেতু কোনও স্বাক্ষর যাচাইকরণ এই পদক্ষেপগুলির সাথে যুক্ত নয়।

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

এটি ফাইলগুলির পক্ষে ভাল কাজ করবে না তবে আপনি কোনও অ্যাপ্লিকেশনের জন্য এটি করতে পারেন (যেমন পিএইচপি / সিজিআই / ... এমনকি আপনি যদি প্রক্সাইড জাভা সার্ভারে শংসাপত্রটি পাস করেন তবে জাভা)। এক মৌলিক উপায় সার্বজনিক কী একটি প্রাক পরিচিত তালিকা আছে হবে, অথবা আপনি ধারণা তাকান পারে foaf + + SSL এর / WebID


2

ব্যবহার SSLVerifyCLient optional_no_ca(পরিবর্তে require) ঘটায় Apache জারি সিএ চেক করবেন (এবং এইভাবে একটি CA শংসাপত্র ফাইল বা পাথ প্রয়োজন হবে না)। এটি ক্লায়েন্ট / ব্যবহারকারীর শংসাপত্র জমা দেওয়ার অনুমতি দেয় না, সুতরাং শংসাপত্রটি আদৌ ব্যবহৃত হয়েছিল তা পরীক্ষা করে আলাদাভাবে করতে হবে।

(স্পষ্টতই, আমি কেবল mod_sslডকুমেন্টেশন পুরোপুরি পড়তে ব্যর্থ হয়েছি ))

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