উত্তর:
একটি কীস্টোরের মধ্যে ব্যক্তিগত কী এবং তার সাথে সম্পর্কিত পাবলিক কী সহ শংসাপত্র রয়েছে।
একটি ট্রাস্টস্টোরে অন্যান্য পক্ষের শংসাপত্র রয়েছে যার সাথে আপনি যোগাযোগের প্রত্যাশা করছেন বা শংসাপত্র কর্তৃপক্ষের কাছ থেকে যা আপনি বিশ্বাস করেন যে অন্য পক্ষগুলি সনাক্ত করতে পারেন।
TrustStore
প্রতি সেও নেই । অথবা আমি এটি জাভা ডক্সে খুঁজে পাইনি (উদাহরণস্বরূপ java.security.TrustStore
)। আমরা যখন কোনও শংসাপত্র কর্তৃপক্ষের উপর বিশ্বাস রাখতে চাই, এটি একটি KeyStore
(এবং এটি এর KeyStore
মধ্যে দেওয়া হয় TrustManagerFactory
) এর মাধ্যমে বিশ্বাসযোগ্য ।
একটি কীস্টোরের ব্যক্তিগত কী রয়েছে। আপনি কেবল এটির প্রয়োজন যদি আপনি সার্ভার হন বা সার্ভারের ক্লায়েন্ট প্রমাণীকরণ প্রয়োজন।
একটি ট্রাস্টস্টোরে বিশ্বাসের জন্য CA শংসাপত্র রয়েছে। যদি আপনার সার্ভারের শংসাপত্রটি কোনও স্বীকৃত সিএ দ্বারা স্বাক্ষরিত হয়, তবে জেআরইর সাথে জাহাজীকরণকারী ডিফল্ট ট্রস্টস্টোরটি ইতিমধ্যে এটিতে বিশ্বাস করবে (কারণ এটি ইতিমধ্যে বিশ্বাসযোগ্য সিএগুলিকে বিশ্বাস করে), সুতরাং আপনার নিজের তৈরি বা কোনওটিতে কিছু যুক্ত করার দরকার নেই you জেআরই থেকে
একটি এসএসএল হ্যান্ডশেকে ট্রাস্টস্টোরের উদ্দেশ্য শংসাপত্রগুলি যাচাই করা এবং কীস্টোরের উদ্দেশ্য শংসাপত্র সরবরাহ করা ।
কীস্টোর
জাভাতে কীস্টোর তাদের পাবলিক কীগুলির সাথে সম্পর্কিত ব্যক্তিগত কী এবং শংসাপত্রগুলি সঞ্চয় করে এবং আপনার যদি SSL সার্ভার বা এসএসএল হয় তবে ক্লায়েন্টের অনুমোদন প্রয়োজন।
TrustStore
ট্রাস্টস্টোর তৃতীয় পক্ষের শংসাপত্রগুলি সংরক্ষণ করে, আপনার জাভা অ্যাপ্লিকেশন যোগাযোগ করে বা সিএ স্বাক্ষরিত শংসাপত্রগুলি (ভেরিসাইন, থাওতে, জিওট্রাস্ট বা গোডাডির মতো শংসাপত্র কর্তৃপক্ষ) যা তৃতীয় পক্ষকে সনাক্ত করতে ব্যবহার করা যেতে পারে।
TrustManager
ট্রাস্ট ম্যানেজার নির্ধারণ করে যে রিমোট সংযোগটি বিশ্বাসযোগ্য হওয়া উচিত কিনা না অর্থাৎ দাবী রিমোট পার্টি যার দ্বারা দাবি করা হয় এবং কী ম্যানেজার সিদ্ধান্ত নিয়েছে যে এসএসএল হ্যান্ডশেকের সময় প্রমাণীকরণের জন্য কোন প্রমাণীকরণ শংসাপত্রগুলি রিমোট হোস্টের কাছে প্রেরণ করা উচিত।
আপনি যদি কোনও এসএসএল সার্ভার হন তবে আপনি কী এক্সচেঞ্জ অ্যালগরিদমের সময় ব্যক্তিগত কী ব্যবহার করবেন এবং ক্লায়েন্টকে আপনার পাবলিক কীগুলির সাথে সম্পর্কিত শংসাপত্রগুলি প্রেরণ করবেন, এই শংসাপত্রটি কী স্টোর থেকে অর্জিত হবে। এসএসএল ক্লায়েন্টের পক্ষে, এটি জাভাতে লেখা থাকলে এটি সার্ভারের পরিচয় যাচাই করতে ট্রাস্টস্টোরে সঞ্চিত শংসাপত্রগুলি ব্যবহার করবে। SSL শংসাপত্র হিসেবে সবচেয়ে বেশি যে হিসাবে আসে হয় .cer যা যে কোনো একটি কি ব্যবস্থাপনা উপযোগ যেমন ব্যবহার করে কীস্টোর বা trustStore মধ্যে যোগ করা হয় ফাইল keytool ।
আপনি স্ট্যান্ডার্ড জেএসএসই ডকুমেন্টেশনের অংশ হিসাবে সান থেকে লেখার বিষয়ে আগ্রহীও হতে পারেন:
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores
সাধারণত, ট্রাস্ট স্টোরটি কেবলমাত্র পাবলিক কীগুলি, যেমন X.509 প্রমাণীকরণের সাথে যাচাইকরণের জন্য সংরক্ষণ করা হয়। পরিচালনার উদ্দেশ্যে, অ্যাডমিনস বা বিকাশকারীদের পক্ষে কেবলমাত্র দুটি স্টোরকে একক স্টোরের সাথে সংযুক্ত করা খুব সাধারণ।
জাভাতে, কীস্টোর এবং ট্রস্টস্টোরের মধ্যে পার্থক্য কী?
জাভা সিকিউর সকেট এক্সটেনশন (জেএসএসই) রেফারেন্স গাইডের জাভা ডক্স থেকে এখানে বিবরণ দেওয়া আছে । আমি মনে করি না যে এটি আপনাকে অন্যরা যা বলেছে তার থেকে আলাদা কিছু বলে। তবে এটি সরকারী রেফারেন্স সরবরাহ করে।
কীস্টোর / truststore
একটি কীস্টোর কী উপাদানগুলির একটি ডাটাবেস। প্রমাণীকরণ এবং ডেটা অখণ্ডতা সহ বিভিন্ন উদ্দেশ্যে মূল উপাদান ব্যবহার করা হয়। বিভিন্ন ধরণের কীস্টোরগুলি পাওয়া যায়, পিকেসিএস 12 এবং ওরাকলের জেকেএস সহ।
সাধারণভাবে বলতে গেলে, কীস্টোরের তথ্য দুটি বিভাগে বিভক্ত করা যেতে পারে: কী এন্ট্রি এবং বিশ্বস্ত শংসাপত্রের এন্ট্রি। একটি কী এন্ট্রি একটি সত্তার পরিচয় এবং তার ব্যক্তিগত কী নিয়ে গঠিত এবং এটি বিভিন্ন ক্রিপ্টোগ্রাফিক উদ্দেশ্যে ব্যবহার করা যেতে পারে। বিপরীতে, একটি বিশ্বস্ত শংসাপত্রের এন্ট্রিতে সত্তার পরিচয় ছাড়াও একটি সর্বজনীন কী থাকে। সুতরাং, একটি ব্যক্তিগত কী প্রয়োজন যেমন একটি javax.net.ssl.KeyManager- তে কোনও বিশ্বস্ত শংসাপত্রের এন্ট্রি ব্যবহার করা যাবে না। জে.কে.এস. এর জেডিকে বাস্তবায়নে, একটি কীস্টোরের মধ্যে কী কীগুলি এবং বিশ্বস্ত শংসাপত্রের এন্ট্রি উভয়ই থাকতে পারে।
একটি ট্রাস্টস্টোর একটি কীস্টোর যা বিশ্বাস করা যায় সে সম্পর্কে সিদ্ধান্ত নেওয়ার সময় ব্যবহৃত হয়। আপনি যদি এমন কোনও সত্তার কাছ থেকে ডেটা গ্রহণ করেন যা আপনি ইতিমধ্যে বিশ্বাস করেছেন এবং যদি আপনি যাচাই করতে পারেন যে সত্তাটি এটি বলে দাবি করেছে তবে আপনি ধরে নিতে পারেন যে ডেটা সত্যই সেই সত্তা থেকে এসেছে।
ব্যবহারকারী যদি সেই সত্তাকে বিশ্বাস করে তবেই কেবল একটি এন্টারস্টোরকে একটি ট্রাস্টস্টোরে যুক্ত করা উচিত। হয় একটি মূল জুড়ি উত্পাদন করে বা একটি শংসাপত্র আমদানির মাধ্যমে, ব্যবহারকারী সেই প্রবেশের উপর বিশ্বাস দেয়। ট্রাস্টস্টোরের যে কোনও প্রবেশিকা বিশ্বাসযোগ্য প্রবেশিকা হিসাবে বিবেচিত হয়।
দুটি ভিন্ন কীস্টোর ফাইল থাকা কার্যকর হতে পারে: একটিতে কেবল আপনার কী এন্ট্রি রয়েছে এবং অন্যটিতে সিএ শংসাপত্র সহ আপনার বিশ্বস্ত শংসাপত্রের এন্ট্রি রয়েছে। পূর্ববর্তীটিতে ব্যক্তিগত তথ্য রয়েছে, তবে পরেরটি তা দেয় না। একক কীস্টোর ফাইলের পরিবর্তে দুটি ফাইল ব্যবহার করা আপনার নিজের শংসাপত্রগুলির (এবং সংশ্লিষ্ট ব্যক্তিগত কীগুলি) এবং অন্যদের শংসাপত্রের মধ্যে লজিক্যাল পার্থক্যের একটি ক্লিনার পৃথকীকরণ সরবরাহ করে। আপনার ব্যক্তিগত কীগুলির জন্য আরও সুরক্ষা দেওয়ার জন্য, এগুলি সীমিত অ্যাক্সেস সহ একটি কীস্টোরে সংরক্ষণ করুন এবং প্রয়োজনে আরও প্রকাশ্যে অ্যাক্সেসযোগ্য কীস্টোরগুলিতে বিশ্বস্ত শংসাপত্র সরবরাহ করুন।
ট্রাস্টস্টোর এবং কীস্টোরের মধ্যে প্রথম এবং প্রধান পার্থক্য হ'ল রিমোট সংযোগ নির্ভর করা উচিত কিনা তা নির্ধারণের জন্য ট্রাস্টস্টোর ব্যবহার করা হয়, এসএসএল হ্যান্ডশেকের সময় প্রমাণীকরণের জন্য কোন প্রমাণীকরণ শংসাপত্রগুলি রিমোট হোস্টের কাছে প্রেরণ করা উচিত তা নির্ধারণের জন্য কীস্টোর ব্যবহার করা হয় ager
আর একটি পার্থক্য হ'ল কীস্টোর তাত্ত্বিকভাবে প্রাইভেট কীগুলি কেবল তখনই প্রয়োজন থাকে যখন আপনি এসএসএল সংযোগে সার্ভার চালাচ্ছেন বা আপনি সার্ভারের পাশে ক্লায়েন্ট প্রমাণীকরণ সক্ষম করেছেন এবং অন্যদিকে ট্রাস্ট স্টোর পাবলিক কী বা সিএ (শংসাপত্র কর্তৃপক্ষ) এর শংসাপত্রগুলি সংরক্ষণ করে যা ব্যবহৃত হয় রিমোট পার্টি বা এসএসএল সংযোগের উপর বিশ্বাস করুন।
প্রকৃতপক্ষে আপনি একই ফাইলটিতে ব্যক্তিগত এবং সর্বজনীন কী উভয়ই সংরক্ষণ করতে পারেন, এই ফাইলটি পরিচালনা করার সরঞ্জামটি একই (কীটল) হিসাবে রয়েছে, সুতরাং আপনি উভয় উদ্দেশ্যেই একটি ফাইল ব্যবহার করতে পারেন, তবে আপনার সম্ভবত এটি করা উচিত নয় ।
কমপক্ষে আমার ম্যাক ওএসএক্সে ডিফল্ট কীস্টোর ${user.home}/.keystore
এবং ডিফল্ট ট্রাস্টস্টোর /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
।
আপনি যদি এগুলি ওভাররাইড করতে চান তবে আপনার JVM পরামিতি যুক্ত করা উচিত
-Djavax.net.ssl.keyStore /path/to/keyStore
বা
-Djavax.net.ssl.trustStore /path/to/trustStore
। java.security.UnrecoverableKeyException: Password must not be
null
প্যারামিটার ব্যবহার করে
-Djavax.net.ssl.trustStorePassword=password
বা ক্ষেত্রে আপনার কী স্টোর পাসওয়ার্ড সেট করার প্রয়োজন হতে পারে
-Djavax.net.ssl.trustStorePassword=password
প্রধান উৎস:
http://javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html