ট্রাস্ট স্টোর বনাম কী স্টোর - কীটোল দিয়ে তৈরি করা হচ্ছে


249

আমি বুঝতে পারি যে কীস্টোরটি সাধারণত ব্যক্তিগত / পাবলিক কী এবং ট্রাস্ট স্টোরটি কেবলমাত্র পাবলিক কী (এবং আপনার সাথে যোগাযোগের উদ্দেশ্যে বিশ্বস্ত দলগুলির তালিকার প্রতিনিধিত্ব করে) রাখে। ঠিক আছে, এটি আমার প্রথম অনুমান, সুতরাং যদি এটি সঠিক না হয় তবে আমি সম্ভবত খুব ভাল শুরু করি নি ...

কীটোল ব্যবহার করার সময় আপনি / কীভাবে আপনার স্টোরগুলিতে পার্থক্য করবেন তা বুঝতে আগ্রহী ছিলাম।

সুতরাং, এখন পর্যন্ত আমি ব্যবহার করে একটি কীস্টোর তৈরি করেছি

keytool -import -alias bob -file bob.crt -keystore keystore.ks

যা আমার keystore.ks ফাইল তৈরি করে। আমি প্রশ্নের উত্তর দিচ্ছি আমি yesকি ববকে বিশ্বাস করি তবে এটি আমার কাছে অস্পষ্ট কিনা যদি এটি কোনও কীস্টোর ফাইল তৈরি করে বা ট্রাস্টস্টোর ফাইল তৈরি করে? আমি ফাইলটি হিসাবে ব্যবহার করতে আমার অ্যাপ্লিকেশন সেট আপ করতে পারি।

-Djavax.net.ssl.keyStore=keystore.ks -Djavax.net.ssl.keyStorePassword=x
-Djavax.net.ssl.trustStore=keystore.ks -Djavax.net.ssl.trustStorePassword=x

এবং System.setProperty( "javax.net.debug", "ssl")সেট সহ, আমি বিশ্বস্ত শংসাপত্রের অধীনে শংসাপত্রটি দেখতে পারি (তবে কীস্টোর বিভাগের অধীনে নয়)। আমি যে বিশেষ শংসাপত্রটি আমদানি করছি তার কেবলমাত্র একটি সরকারী কী রয়েছে এবং আমি এটি ববকে কোনও এসএসএল সংযোগের মাধ্যমে জিনিস প্রেরণে ব্যবহার করার ইচ্ছা করি (তবে সম্ভবত এটি অন্য প্রশ্নের জন্য সবচেয়ে ভাল বাম!)।

যে কোনও পয়েন্টার বা স্পষ্টতা অনেক প্রশংসা করা হবে। কীটোলের আউটপুট কি আপনি আমদানি করুন এবং কেবলমাত্র কনভেনশন যা একই রকম বলে যে একটি কীস্টোর এবং অন্যটি বিশ্বাসের দোকান? এসএসএল ইত্যাদি ব্যবহার করার সময় কী সম্পর্ক?


"আমি যে বিশেষ শংসাপত্রটি আমদানি করছি তার কেবল একটি পাবলিক কী রয়েছে" বলতে কী বোঝাতে পেরেছি তা আমি নিশ্চিত নই: এটি কি কেবল একটি সরকারী কী (যেমন শংসাপত্র নয়) বা নন-সিএ শংসাপত্র?
ব্রুনো

হুঁ, নিশ্চিত না আমি আমার ব্রাউজার থেকে পিইএম ফাইল হিসাবে রফতানি করেছি। এটা কি সাহায্য করে?
টবি

যদি এটি ব্রাউজার থেকে রফতানি হয় তবে এটি সম্ভবত একটি শংসাপত্র। এটি কি কোনও সার্ভার শংসাপত্র (কোনও সিএন বা সাবজেক্টের সাথে সার্ভারের নামের সাথে মিলিত নাম) রয়েছে? এটি কি সিএ শংসাপত্র (বেসিক সীমাবদ্ধতার অধীনে দেখুন, আপনার ব্রাউজারটি ব্যবহার করে এটি দেখতে সক্ষম হওয়া উচিত)।
ব্রুনো

2
tl; dr: ট্রাস্ট স্টোরগুলিতে সর্বজনীন, বিশ্বস্ত, মূল (সিএ) শংসাপত্র থাকে, তবে পরিচয় / কী স্টোরগুলিতে ব্যক্তিগত, পরিচয় শংসাপত্র থাকে; ফাইল-ভিত্তিক, তবে, তারা একই।
অ্যান্ড্রু

উত্তর:


346

পরিভাষাটি আসলে কিছুটা বিভ্রান্তিকর, তবে উভয়ই javax.net.ssl.keyStoreএবং javax.net.ssl.trustStoreদু'টি পৃথক উদ্দেশ্যে কোন কীস্টোরগুলি ব্যবহার করতে হবে তা নির্দিষ্ট করতে ব্যবহৃত হয়। কীস্টোরগুলি বিভিন্ন ফর্ম্যাটে আসে এবং অগত্যা ফাইলও হয় না ( এই প্রশ্নটি দেখুন ), এবং keytoolতাদের উপর বিভিন্ন ক্রিয়াকলাপ সম্পাদনের কেবলমাত্র একটি সরঞ্জাম (আমদানি / এক্সপোর্ট / তালিকা / ...)।

javax.net.ssl.keyStoreএবং javax.net.ssl.trustStoreপরামিতি নির্মাণ করতে ব্যবহৃত ডিফল্ট পরামিতি হয় KeyManagers এবং TrustManagerগুলি (যথাক্রমে), তারপর একটি নির্মাণ করতে ব্যবহৃত SSLContextযা মূলত যখন একটি SSL / TLS এর একটি মাধ্যমে সংযোগ তৈরি ব্যবহারের SSL / TLS সেটিংস রয়েছে SSLSocketFactoryঅথবা একটি SSLEngine। এই সিস্টেমের বৈশিষ্ট্যগুলি ঠিক সেখানেই ডিফল্ট মানগুলি থেকে আসে, যা পরে ব্যবহৃত হয় SSLContext.getDefault(), SSLSocketFactory.getDefault()উদাহরণস্বরূপ নিজের দ্বারা ব্যবহৃত হয় । (যদি আপনি ডিফল্ট মানগুলি এবং SSLContextকোনও নির্দিষ্ট উদ্দেশ্যে নির্দিষ্ট উদ্দেশ্যে ব্যবহার না করতে চান তবে এগুলি সমস্ত কয়েকটি জায়গায় বেশ কয়েকটি জায়গায় কাস্টমাইজ করা যায় ))

মধ্যে পার্থক্য KeyManagerএবং TrustManager(এবং এইভাবে মধ্যে javax.net.ssl.keyStoreএবং javax.net.ssl.trustStore) হিসাবে অনুসরণ করে (থেকে উদ্ধৃত করা হয় JSSE সুত্র নির্দেশিকা ):

ট্রাস্ট ম্যানেজার: দূরবর্তী প্রমাণীকরণ শংসাপত্রগুলির (এবং এইভাবে সংযোগ) বিশ্বাসযোগ্য কিনা তা নির্ধারণ করে।

কী ম্যানেজার: দূরবর্তী হোস্টে কোন প্রমাণীকরণের শংসাপত্রগুলি প্রেরণ করবে তা নির্ধারণ করে।

(অন্যান্য পরামিতি উপলব্ধ এবং তাদের ডিফল্ট মানগুলি জেএসএসই রেফার গাইডে বর্ণিত হয়েছে Note মনে রাখবেন যে ট্রাস্ট স্টোরের জন্য একটি ডিফল্ট মান থাকলেও মূল স্টোরের জন্য একটি নেই))

মূলত, কীস্টোরটি javax.net.ssl.keyStoreআপনার ব্যক্তিগত কী এবং শংসাপত্রগুলি javax.net.ssl.trustStoreবোঝায় , অন্যদিকে কোনও প্রত্যন্ত দল যখন শংসাপত্র উপস্থাপন করে আপনি বিশ্বাস করতে ইচ্ছুক সিএ শংসাপত্রগুলি ধারণ করে contain কিছু ক্ষেত্রে, সেগুলি এক এবং একই স্টোর হতে পারে, যদিও স্বতন্ত্র স্টোরগুলি ব্যবহার করার জন্য এটি প্রায়শই ভাল অনুশীলন হয় (বিশেষত যখন তারা ফাইল-ভিত্তিক হয়)।


উত্তরের জন্য ধন্যবাদ, এটি কিছুটা পরিষ্কার করে দেয়। আমি এখনও বিভ্রান্ত হয়েছি যদিও এটি ব্যবহারের ক্ষেত্রে, আমি একটি পিস 12 প্রি / পাব কী (xxx.p12) কীস্টোর (-D মাধ্যমে) হিসাবে ব্যবহার করতে পারি এবং একটি ট্রান্সস্টার স্টোরের কোনও উল্লেখ ছাড়াই একটি এসএসএল সংযোগ (বিশ্বস্ত) তৈরি করতে পারি - ডি ... ওহ ভাল।
টবি

57
আপনার একটি ট্রাস্টস্টোর নির্দিষ্ট করার দরকার নেই, কারণ এটির জন্য একটি ডিফল্ট মান (এটি $JAVA_HOME/lib/security/cacertsজেআরই দিয়ে বান্ডিল করা হয়) সাধারণত থাকে (আমি যে ২ য় জেএসইয়ের রেফার গাইড লিঙ্কটি প্রেরণ করেছি) দেখুন। ব্রাউজারগুলির মতো এটিতে বিশ্বাসযোগ্য সিএ শংসাপত্রগুলির একটি ডিফল্ট সেট থাকে। সাধারণভাবে, ক্লায়েন্ট সর্বদা সার্ভার শংসাপত্রটি পরীক্ষা করার জন্য ট্রস্টস্টোর ব্যবহার করে তবে সার্ভারটি যদি ক্লায়েন্ট সার্টের জন্য অনুরোধ করে তবেই কীস্টোরটি ব্যবহার করা হবে এবং সার্ভার সর্বদা নিজের কী + সার্টের জন্য কীস্টোর ব্যবহার করবে তবে ট্রাস্টস্টোর কেবলমাত্র ক্লায়েন্ট যদি ক্লায়েন্ট শংসাপত্র প্রেরণ করে তবে ব্যবহৃত হয়।
ব্রুনো

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

@ ব্রুনোরও কি আমাদের লক্ষ করা উচিত যে যখন "jssecacerts" থাকে তখন "ক্যাসার্টস" উপেক্ষা করা হয়?
kommradHomer

61

সাধারণ ব্যবহার / উদ্দেশ্য বা সাধারণভাবে ব্যাখ্যা করতে:

ট্রাস্টস্টোর : নামটি ইঙ্গিত হিসাবে, এটি সাধারণত বিশ্বস্ত সত্তার শংসাপত্রগুলি সংরক্ষণ করতে ব্যবহৃত হয়। কোনও প্রক্রিয়া এটি নির্ভর করে এমন সমস্ত বিশ্বস্ত পক্ষের শংসাপত্রের একটি স্টোর বজায় রাখতে পারে।

কীস্টোর : স্বাক্ষরিত শংসাপত্রের সাথে সার্ভার কীগুলি (পাবলিক এবং প্রাইভেট উভয়) সঞ্চয় করতে ব্যবহৃত হয়।

এসএসএল হ্যান্ডশেকের সময়,

  1. একটি ক্লায়েন্ট https: // অ্যাক্সেস করার চেষ্টা করে

  2. এবং এইভাবে, সার্ভার একটি এসএসএল শংসাপত্র সরবরাহ করে প্রতিক্রিয়া জানায় (যা এর কীস্টোরের মধ্যে সঞ্চিত)

  3. এখন, ক্লায়েন্টটি এসএসএল শংসাপত্র গ্রহণ করে এটি ট্রাস্টস্টোরের মাধ্যমে যাচাই করে (যেমন ক্লায়েন্টের ট্রাস্টস্টোর ইতিমধ্যে এটি নির্ভর করে এমন শংসাপত্রের পূর্বনির্ধারিত সেট রয়েছে))। এর মতো: আমি কি এই সার্ভারকে বিশ্বাস করতে পারি? এটি কি একই সার্ভার যার সাথে আমি কথা বলার চেষ্টা করছি? কোন মাঝারি মানুষ আক্রমণ?

  4. একবার, ক্লায়েন্ট যাচাই করেছে যে এটি সার্ভারের সাথে কথা বলছে যা এটি নির্ভর করে, তারপরে কোনও এসএসএল যোগাযোগটি একটি ভাগ করা গোপন কীতে ঘটতে পারে।

দ্রষ্টব্য: আমি এখানে সার্ভারের পাশে ক্লায়েন্ট প্রমাণীকরণ সম্পর্কে কিছু বলছি না। যদি কোনও সার্ভার কোনও ক্লায়েন্টের প্রমাণীকরণও করতে চায়, তবে সার্ভার ক্লায়েন্টকে যাচাই করার জন্য একটি ট্রাস্ট স্টোরও বজায় রাখে।


25

কীস্টোর এবং ট্রস্টস্টোর ফাইলগুলির মধ্যে কোনও পার্থক্য নেই। উভয়ই স্বত্বাধিকারী জেকেএস ফাইল ফর্ম্যাটের ফাইল। পার্থক্যটি ব্যবহারে রয়েছে: আমার জ্ঞানের সর্বোত্তম হিসাবে, জাভা কেবলমাত্র -Djavax.net.ssl.trustStoreএসএসএল সংযোগ তৈরি করার সময় বিশ্বাসের শংসাপত্রগুলির সন্ধানের জন্য সিস্টেম সম্পত্তি দ্বারা রেফারেন্সযুক্ত স্টোরটি ব্যবহার করবে । কী এবং একই জন্য -Djavax.net.ssl.keyStore। তবে তত্ত্বের ভিত্তিতে বিশ্বাস এবং কীস্টোরগুলির জন্য এক এবং একই ফাইলটি ব্যবহার করা ভাল।


4
আপনি সেট করে কীস্টোর (যেমন, PKCS12) বিভিন্ন ধরনের ব্যবহার করতে পারেন javax.net.ssl.keyStoreTypeএবং javax.net.ssl.trustStoreTypeসিস্টেম বৈশিষ্ট্য।
ডোনাল ফেলো

1
@ ডোনাল: ভাল সংযোজন। সমস্ত সমর্থিত পাত্রে একটি তালিকা আছে কিনা তা আপনি কি জানতে পারেন? আমি কেবল পিকেসিএস 12 এবং জেকেএসকেই জানি (পূর্ববর্তীটি পরীক্ষার এবং ত্রুটির ফলস্বরূপ ...)।
musiKk

2
কীস্টোরের ফর্ম্যাটগুলি উপলব্ধ সরবরাহকারীর উপর নির্ভর করে পরিবর্তিত হয় ( ডিফল্টরূপে ওরাকল জেআরই দিয়ে বান্ডেল করা ব্যক্তিদের জন্য এই তালিকাটি দেখুন )। এই প্রশ্নে একটি আলোচনাও হয়েছিল । অন্যান্য সরবরাহকারী (উদাঃ বাউনসিস্টল) অন্যান্য ফর্ম্যাটের জন্য ব্যবহার করা যেতে পারে।
ব্রুনো

21

কীস্টোরটি ব্যক্তিগত কীগুলি সঞ্চয় করার জন্য সার্ভার দ্বারা ব্যবহৃত হয় এবং তৃতীয় পক্ষের ক্লায়েন্ট দ্বারা অ্যাক্সেসের জন্য সার্ভারের দ্বারা সরবরাহিত পাবলিক কীগুলি সঞ্চয় করতে ট্রস্টস্টোর ব্যবহার করা হয়। আমি আমার প্রযোজনার অ্যাপ্লিকেশনটিতে এটি করেছি। নীচে এসএসএল যোগাযোগের জন্য জাভা শংসাপত্র তৈরির পদক্ষেপ রয়েছে:

  1. উইন্ডোতে কীজেন কমান্ড ব্যবহার করে একটি শংসাপত্র তৈরি করুন:

keytool -genkey -keystore server.keystore -alias mycert -keyalg RSA -keysize 2048 -validity 3950

  1. স্বীকৃতি শংসাপত্র:

keytool -selfcert -alias mycert -keystore server.keystore -validity 3950

  1. ফোল্ডারে শংসাপত্র রফতানি করুন:

keytool -export -alias mycert -keystore server.keystore -rfc -file mycert.cer

  1. ক্লায়েন্ট ট্রস্টস্টোরে শংসাপত্র আমদানি করুন:

keytool -importcert -alias mycert -file mycert.cer -keystore truststore


হাই, আমার একটি দৃশ্য আছে যেখানে একই ধারক (টমক্যাট) এর মধ্যে আমার দুটি পৃথক অ্যাপ্লিকেশন রয়েছে। উভয় অ্যাপ্লিকেশন থেকে, আমাকে প্রতিটি অ্যাপ্লিকেশনে উভয় পক্ষের থেকে বাকি শেষ পয়েন্টগুলি কল করতে হবে। যেমন, এ থেকে বি এবং বি থেকে এ (এ এবং বি দুটি অ্যাপ্লিকেশন)। এই দৃশ্যে আমার কি ট্রাস্টস্টোর ব্যবহার করা দরকার? আমি যেমন কাস্টম রেস্ট ক্লায়েন্ট ব্যবহার করছি যা কীস্টোর ব্যবহার করছে। সুপারিশ করুন.
দীপক

0

কীটোল ব্যবহার করে আপনার স্থানীয় মেশিনে একটি ট্রাস্টস্টোর তৈরি করার পদক্ষেপ এই। আপনার স্থানীয় মেশিনে একটি URL এর জন্য ট্রাস্টস্টোর তৈরি করার পদক্ষেপ।

1) ক্রোম ব্যবহার করে ব্রাউজারে ইউআরএল হিট করুন

2) ক্রোমের url এর বাম দিকে "আমি" আইকনটি পরীক্ষা করে এটি ক্লিক করুন

3) শংসাপত্র বিকল্পের জন্য চেক করুন এবং এটি ক্লিক করুন এবং একটি ডায়ালগ বাক্স খুলবে

4) ট্রাস্টস্টোর তৈরির জন্য উপলব্ধ শংসাপত্রগুলির সংখ্যার জন্য "শংসাপত্রের পথ" ট্যাবটি পরীক্ষা করে দেখুন

5) "details" tab -> click"Copy to File" -> Give the path and the name for the certificateআপনি তৈরি করতে চান যান ।

6) এটিতে প্যারেন্ট শংসাপত্র রয়েছে কিনা তা পরীক্ষা করে দেখুন এবং "5" পয়েন্টটি অনুসরণ করুন ।

)) সমস্ত শংসাপত্রগুলি ওপেন কমান্ড প্রম্পট তৈরি করার পরে আপনি যেখানে শংসাপত্র তৈরি করেছেন সে পথে নেভিগেট করুন।

8) শংসাপত্রগুলি যুক্ত করতে এবং একটি ট্রাস্টস্টোর তৈরি করতে নীচের কীটল কমান্ড সরবরাহ করুন।

Sample: 
   keytool -import -alias abcdefg -file abcdefg.cer -keystore cacerts
        where "abcdefg" is the alias name and "abcdefg.cer" is the actual certificate name and "cacerts" is the truststore name

9) সমস্ত শংসাপত্রের জন্য কীটল কমান্ড সরবরাহ করুন এবং সেগুলি ট্রাস্ট স্টোরে যুক্ত করুন।

    keytool -list -v -keystore cacerts

-1

কীস্টোর সহজেই ব্যক্তিগত কীগুলি সঞ্চয় করে, ট্রাস্টস্টোর পাবলিক কীগুলি সঞ্চয় করে। আপনি এসএসএল যোগাযোগের জন্য একটি জাভা শংসাপত্র তৈরি করতে চাইবেন। আপনি উইন্ডোতে একটি কীজেন কমান্ড ব্যবহার করতে পারেন, এটি সম্ভবত সবচেয়ে সহজ সমাধান হবে।


একটি ট্রাস্টস্টোর বিশ্বস্ত শংসাপত্রগুলি সঞ্চয় করে
মার্কুইস

-1

সহজ কথায়:

কীস্টোরটি আপনার শংসাপত্র (সার্ভার বা ক্লায়েন্ট) সংরক্ষণ করার জন্য ব্যবহৃত হয় যখন ট্রস্টস্টোরটি অন্যের শংসাপত্র (সিএ থেকে শংসাপত্র) সঞ্চয় করতে ব্যবহৃত হয়।

আপনি এসএসএল-এ সার্ভার সাইড সেট আপ করার সময় কীস্টোরের প্রয়োজন হয়, এটি সার্ভারের পরিচয় শংসাপত্র সংরক্ষণ করার জন্য ব্যবহৃত হয়, কোন সার্ভারটি সংযোগের কোনও ক্লায়েন্টকে উপস্থাপন করবে যখন ক্লায়েন্টের পক্ষে ট্রাস্ট স্টোর সেটআপে সংযোগটি কাজ করতে হবে। আপনি যদি SSL- র মাধ্যমে কোনও ওয়েবসাইটের সাথে সংযোগ স্থাপন করতে ব্রাউজার হন তবে এটি তার ট্রাস্টস্টোরের বিপরীতে সার্ভারের দ্বারা উপস্থাপিত শংসাপত্রটি যাচাই করে।

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