এই দুটির মধ্যে পার্থক্য কী?
উত্তর:
X509Certificate .NET v1.0 এ চালু করা হয় / 1.1 এবং ছিল (তুলনামূলকভাবে) তার কার্যকারিতা সীমিত। এটি বিদ্যমান শংসাপত্র (বৈধ তারিখ, ইস্যুকারী, ইত্যাদি) সম্পর্কিত তথ্য পেতে ব্যবহার করা যেতে পারে। এটিতে সহজ পদ্ধতি / ক্রিয়াকলাপ (যেমন ডিস্ক থেকে কোনও শংসাপত্র পড়া) ছিল।
X509Certificate2 অতিরিক্ত বৈশিষ্ট্য সহ x509Certificate একটি উপশ্রেণী হয়।
সম্পূর্ণতার জন্য, এখানে @ dommer এর উত্তরে লিঙ্কযুক্ত সাইটের প্রাসঙ্গিক বিভাগের একটি অনুলিপি দেওয়া হয়েছে , যেহেতু সাইটটি আর আপ না হতে পারে এবং কেবল কারা জানেন- কতক্ষণ Google এর ক্যাশে থাকবে:
আপনাকে শংসাপত্রগুলি ম্যানিপুলেট করার অনুমতি দেওয়ার জন্য ফ্রেমওয়ার্কের 1.1 সংস্করণটি X509 সার্টিফিকেট শ্রেণীর চেয়ে খুব সামান্য ছিল। প্রকৃতপক্ষে, v1.1 X509 সার্টিফিকেট শ্রেণি কেবলমাত্র প্রাথমিক সমর্থন দিয়েছে: এটি কেবলমাত্র X509 সংস্করণ 1 ক্ষেত্রগুলিতে অ্যাক্সেস দিয়েছে (যেমন তারিখ, বিষয় এবং পাবলিক কী থেকে বৈধ এবং বৈধ) তবে সংস্করণ 2 ক্ষেত্র নয় (কর্তৃপক্ষ কী সনাক্তকারী হিসাবে ) বা সংস্করণ 3 ক্ষেত্র (কী ব্যবহারের মতো)। শংসাপত্রের স্টোর থেকে শংসাপত্র লোড করার জন্য কোনও সমর্থন ছিল না, শংসাপত্র প্রত্যাহার তালিকা বা শংসাপত্রের বিশ্বাসের তালিকাগুলি অ্যাক্সেস করার সুবিধা নেই। মাইক্রোসফ্ট ওয়েব সার্ভিসেস এনহান্সমেন্ট (ডাব্লুএসই) টুলকিট শংসাপত্রের ক্লাস প্রসারিত করে এবং শংসাপত্রের স্টোরগুলিতে অ্যাক্সেসের ক্লাস সরবরাহ করে এর সাথে উন্নতি করেছে। এই ক্লাসগুলি এখন .NET 3.0 / 2.0 ফ্রেমওয়ার্ক লাইব্রেরিতে পাওয়া যাবে।
প্রথম বড় পরিবর্তনটি এক্স 509 সার্টিফিট 2 নামে একটি নতুন শ্রেণি যা X509 সার্টিফিকেট থেকে প্রাপ্ত। এক্স 509 শংসাপত্রের ক্ষেত্রগুলিতে অ্যাক্সেসের পদ্ধতিগুলি হ্রাস করা হয়েছে এবং এখন ক্লাসে সেই ক্ষেত্রগুলি অ্যাক্সেস করার বৈশিষ্ট্য রয়েছে। এছাড়াও, যদি শংসাপত্রের কোনও সম্পর্কিত ব্যক্তিগত কী থাকে তবে ক্লাসটি এই কীটিতে অ্যাক্সেস দেয়। এমন একটি পদ্ধতি রয়েছে যেগুলি ব্যক্তিগত কী দ্বারা সুরক্ষিত থাকলে আপনাকে একটি পাসওয়ার্ড সরবরাহ করতে দেয়। পাসওয়ার্ডটি একটি সিকিউরস্ট্রিং প্যারামিটারের মধ্য দিয়ে গেছে যা একটি বিশেষ ধরণের যা নিশ্চিত করে যে যখন অবজেক্টটি আর মেমরির অধিবেশন করা হচ্ছে না তখন এটি লিখিত থাকবে যাতে মেশিনের অন্য কোনও প্রক্রিয়া দ্বারা পাসওয়ার্ডটি পড়া যায় না। সুরক্ষিত স্ট্রিং এবং সুরক্ষিত ডেটার অন্যান্য ফর্মগুলি পরবর্তী বিভাগে আচ্ছাদিত করা হবে।
যেহেতু X509 সার্টিফিট 2 এক্স509 থেকে উদ্ভূত হয়েছে এর প্রত্যয় এর অর্থ আপনি X509 সার্টিফিট 2 শ্রেণীর মাধ্যমে স্থির পদ্ধতিগুলি ক্রিয়েটফ্রিমকার্টফিল এবং ক্রিয়েটফ্রমসাইনড ফাইলে কল করতে পারেন। যাইহোক, এই পদ্ধতিগুলি একটি X509 সার্টিফিকেট অবজেক্ট দেয় এবং আপনি এটি X509 সার্টিফিট 2 অবজেক্টে কাস্ট করতে পারবেন না। এক্স 509 সার্টিফিকেট ক্লাসটি 3.0 / 2.0 সংস্করণে উন্নত করা হয়েছে: এটি X509 ক্ষেত্রের কয়েকটি অ্যাক্সেসের জন্য বৈশিষ্ট্য সরবরাহ করে; এটি বাইট অ্যারে থেকে কোনও বস্তুর সূচনা করতে বা শংসাপত্র থেকে একটি বাইট অ্যারে তৈরি করার জন্য আমদানি ও রফতানি পদ্ধতি সরবরাহ করে এবং এতে এমন কনস্ট্রাক্টর রয়েছে যা কোনও ফাইল (ASN.1 DER) এবং বাইট অ্যারে থেকে একটি অবজেক্ট তৈরি করবে। মজার বিষয় হচ্ছে X509 সার্টিফিট 2 শ্রেণিতে এমন একটি নির্মাতা রয়েছে যা একটি X509 সার্টিফিকেট 2 অবজেক্ট থেকে একটি X509 সার্টিফেট 2 অবজেক্ট তৈরি করতে পারে।
যাঁরা শংসাপত্রটি পড়তে এবং এটির সত্যায়িত করতে এটি ব্যবহার করতে চান তাদের জন্য একটি X509 সার্টিফিকেট 2 তৈরি করতে হবে এবং এটির কনস্ট্রাক্টরে X509 সার্টিফিকেট পাস করবে।
স্বাক্ষরিত সমাবেশের জন্য (উদাহরণ) কোডটি এই জাতীয় কোড হবে এবং আমি সরলতার জন্য ত্রুটির বৈধতা বাদ দিই।
Module m = Assembly.GetEntryAssembly().GetModules()[0];
using (var cert = m.GetSignerCertificate())
using (var cert2 = new X509Certificate2(cert))
{
var _clientHandler = new HttpClientHandler();
_clientHandler.ClientCertificates.Add(cert2);
_clientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
var myModel = new Dictionary<string, string>
{
{ "property1","value" },
{ "property2","value" },
};
using (var content = new FormUrlEncodedContent(myModel))
using (var _client = new HttpClient(_clientHandler))
using (HttpResponseMessage response = _client.PostAsync($"{url}/{controler}/{action}", content).Result)
{
response.EnsureSuccessStatusCode();
string jsonString = response.Content.ReadAsStringAsync().Result;
var json = new Newtonsoft.Json.JsonSerializer();
var myClass = JsonConvert.DeserializeObject<MyClass>(json);
}
}
স্পষ্টতই আপনার শ্রেণিটিকে মাইক্লাস বলা হয় না তবে এমন কিছু ব্যবসায়িক অবজেক্ট যা আপনি ওয়েব পরিষেবা থেকে আশা করতে পারেন।
আপনার প্রয়োজনীয় সম্পত্তি এবং মান প্রেরণ করে আপনি আপনার ক্রিয়ায় একটি শ্রেণি পাঠাতে পারেন। আপনি এখন নিশ্চিত করতে পারেন যে অনুরোধটি অনুরোধ শংসাপত্রটি পড়ে আপনি যে অনুরোধটি পেয়েছেন তা বৈধ মোবাইল বা উইন্ডোজ ক্লায়েন্টের থেকে:
public class MyController : ApiController
{
public IHttpActionResult Get()
{
X509Certificate2 clientCertInRequest = Request.HttpContext.Connection.ClientCertificate;
if (!clientCertInRequest.Verify() || !AllowedCerialNumbers(clientCertInRequest.SerialNumber))
{
Response.StatusCode = 404;
return null;
}
//your code
}
}
যা বাকি আছে তা হ'ল ক্লায়েন্টের শংসাপত্রগুলি গ্রহণ করার জন্য আপনার ওয়েবসভারটি সেট করা ... আপনি নতুন ফর্ম্যাট থেকে আসা এবং আপনি আপনার পাবলিক ওয়েব পরিষেবা সুরক্ষিত বৈশিষ্ট্য সম্পর্কে সমস্ত কিছু পড়তে পারেন, কেবল অনুমোদিত হওয়ার কারণে এমন কিছু করতে ব্যর্থ যেটি যথেষ্ট যথেষ্ট নয় enough আর (যদি এটি কখনও ছিল)
X509Certificate2
এছাড়াও প্রাইভেট কীতে সদস্য রয়েছে, যা শংসাপত্রের নিজেই অংশ নয় তবে এক্স.509 শংসাপত্রের প্রতিনিধিত্বকারী শ্রেণীর সাথে যুক্ত হওয়া সুবিধাজনক।