জাভা এসএসএল এবং সার্ট কীস্টোর


165

আমার জাভা প্রোগ্রামটি কীভাবে জানতে পারে যে শংসাপত্রটি সহ আমার কীস্টোরটি আছে? অথবা বিকল্পভাবে আমি কীভাবে আমার জাভা প্রোগ্রামটি বলব কী কী স্টোরটি সন্ধান করতে হবে?

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


সিস্টেম.সেটপ্রোপার্টি সেটিং (নীচের পদ্ধতির) ব্যবহার এড়ানো ভাল, দেখুন: এসএসএল কনটেক্সট
কীমেঞ্জারফ্যাক্টরি

উত্তর:


111
System.setProperty("javax.net.ssl.trustStore", path_to_your_jks_file);

4
উইন্ডোজ বাক্সে এটি কীভাবে উল্লেখ করতে হয় কেউ জানেন? System.setProperty ("javax.net.ssl.trustStore", "সি: \\ প্রোগ্রাম ফাইল (x86) \\ জাভা \\ jdk1.7.0_21 re jre \\ lib \\ সুরক্ষা \\ cacerts"); আমার জন্য কাজ করছে না :(
সিমিনাইজার

4
উইন্ডোজে, নির্দিষ্ট পথের নাম অবশ্যই ফরওয়ার্ড স্ল্যাশ, /, ব্যাকস্ল্যাশের জায়গায় ব্যবহার করতে হবে \
Droidman

এই কাজ? আমি একই কোড ব্যবহার করেছি যেখানে আমার 'জিক্স' ফাইলটিতে সিএ শংসাপত্র রয়েছে। তবে আমি এখনও javax.xML.ws.WebServiceException: org.apache.axis2.AxisFault: পরিবহন ত্রুটি: 403 ত্রুটি: নিষিদ্ধ ত্রুটি যখন আমি ক্লাস কোডটি এসওএপি উত্পন্ন স্টাবের মাধ্যমে কল করি। কোন ধারনা?
james2611nov

1
এখানে একটি পাসওয়ার্ড সিস্টেমের সম্পত্তি (javax.net.ssl.trustStorePassword) রয়েছে। জেভিএম আর্গুমেন্ট হিসাবেও পাস করা যেতে পারে -ডাজাভক্স.এন.এসএল.আরস্টস্টোর = ক্লায়েন্ট ট্রাস্টস্টোর.কি -ড্যাভাক্সটস.এসএসএল.স্ট্রেস্ট স্টোরপ্যাসওয়ার্ড = কাস্টমপ্যাসওয়ার্ড ডক্টর.অরাকল.com/javadb/ 10.8.3.0
adminguide/

@ জেমস 2611 এনভ: যদি আপনি এইচটিটিপিএস 403 ত্রুটি (বা অন্য কোনও এইচটিটিপি প্রতিক্রিয়া) একজন এইচটিটিপিএস শেষ পয়েন্ট কল করে থাকেন তবে তার অর্থ এই যে আপনি টিএলএস সেটআপটি সফলভাবে পেরিয়ে গেছেন: টিএলএস চ্যানেলটি সেট আপ হওয়ার পরেই এইচটিটিপি ইন্টারঅ্যাকশনগুলি ঘটবে ( অন্যথায় তারা সুরক্ষিত হতে পারে না)। সুতরাং - হ্যাঁ, এই উত্তরটি সম্ভবত আপনার জন্য কাজ করেছে। :-)
রুখ 30'19

295

SSL বৈশিষ্ট্যগুলি সিস্টেমের বৈশিষ্ট্যগুলির মাধ্যমে JVM স্তরে সেট করা থাকে। মানে আপনি প্রোগ্রামটি চালানোর সময় আপনি সেগুলি সেট করতে পারবেন (জাভা-ডি ....) অথবা আপনি সিস্টেম.সেটপ্রোপার্টি করে কোডগুলিতে সেট করতে পারেন।

আপনাকে যে নির্দিষ্ট কীগুলি সেট করতে হবে তা নীচে রয়েছে:

javax.net.ssl.keyStore - অ্যাপ্লিকেশন প্রক্রিয়ার নিজস্ব শংসাপত্র এবং ব্যক্তিগত কী সম্বলিত জাভা কীস্টোর ফাইলের অবস্থান। উইন্ডোজে, নির্দিষ্ট পথের নাম অবশ্যই ব্যাকস্ল্যাশগুলির স্থানে, /, ফরওয়ার্ড স্ল্যাশ ব্যবহার করতে হবে।

javax.net.ssl.keyStorePassword - দ্বারা নির্দিষ্ট কীস্টোর ফাইল থেকে ব্যক্তিগত কী অ্যাক্সেসের জন্য পাসওয়ার্ড। এই পাসওয়ার্ডটি দু'বার ব্যবহার করা হয়েছে: কীস্টোর ফাইলটি (স্টোর পাসওয়ার্ড) আনলক করতে এবং কীস্টোরে (কী পাসওয়ার্ড) সঞ্চিত ব্যক্তিগত কী ডিক্রিপ্ট করতে।

javax.net.ssl.trustStore - জাভা কীস্টোর ফাইলের সিএ শংসাপত্রের সংকলন সম্বলিত এই অ্যাপ্লিকেশন প্রক্রিয়া (ট্রাস্ট স্টোর) দ্বারা বিশ্বাসযোগ্য Location উইন্ডোজে, নির্দিষ্ট পথের নাম অবশ্যই ফরওয়ার্ড স্ল্যাশ ব্যবহার করতে হবে,/ ব্যাকস্ল্যাশগুলির স্থানে,\

যদি এই সম্পত্তি ব্যবহার করে কোনও ট্রাস্ট স্টোরের অবস্থান নির্দিষ্ট করা না থাকে তবে সানজেএসএসই বাস্তবায়ন নিম্নলিখিত স্থানগুলিতে (ক্রম) একটি কীস্টোর ফাইল অনুসন্ধান করে এবং ব্যবহার করে:

  1. $JAVA_HOME/lib/security/jssecacerts
  2. $JAVA_HOME/lib/security/cacerts

javax.net.ssl.trustStorePassword - দ্বারা বর্ণিত কীস্টোর ফাইল (স্টোর পাসওয়ার্ড) আনলক করার জন্য পাসওয়ার্ড javax.net.ssl.trustStore

javax.net.ssl.trustStoreType - ( ) জাভা কীস্টোর ফাইল ফর্ম্যাটের জন্য, এই সম্পত্তিটির মান jks (বা জে কেএস) রয়েছে। আপনি সাধারণত এই সম্পত্তিটি নির্দিষ্ট করেন না, কারণ এর ডিফল্ট মানটি ইতিমধ্যে jks।

javax.net.debug - এসএসএল / টিএলএস স্তরটির জন্য লগিং চালু করতে, এই সম্পত্তিটি এসএসএলে সেট করুন।


17
যে দস্তাবেজ থেকে এটি উদ্ধৃত হয়েছে তার সাথে লিঙ্ক করা আরও উপযুক্ত হবে। আমার ধারণা এটি হ'ল: ফিউসোর্স
ব্রুনো

4
অফিসিয়াল ডকুমেন্টটি জেএসএসই রেফারেন্স গাইড হতে হবে: docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/…
aleung


11
সিস্টেম ট্রাস্ট স্টোরটি যে কেউ সম্পাদনা করতে চাইতে পারে তার জন্য, ডিফল্ট পাসওয়ার্ডটি হ'ল "পরিবর্তন": সম্প্রদায়.অরাকল
থ্রিড

Javax.net.ssl.trustStorePassword প্রোপের জন্য +1। আমি কিছুক্ষণ ঘুরে দেখছিলাম এবং এটিই প্রথম এটি উল্লেখ করেছিল।
jgreen

22

সতর্কতার শুধু একটি শব্দ। আপনি যদি জাভা 9-র মধ্যে বিদ্যমান জেকেএস কীস্টোরটি খোলার চেষ্টা করছেন, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনি নীচের বৈশিষ্ট্যগুলিকে "জেকেএস" হিসাবে মান সহ উল্লেখ করেছেন:

javax.net.ssl.keyStoreType
javax.net.ssl.trustStoreType

জাভা.সিকিউরিটি ফাইলে উল্লিখিত ডিফল্ট কীস্টোর টাইপটি জাভা 9 থেকে jks থেকে pkcs12 এ পরিবর্তিত হয়েছে reason


11

প্রথমত, দুটি ধরণের কীস্টোর রয়েছে।

স্বতন্ত্র এবং সাধারণ

অ্যাপ্লিকেশনটি প্রারম্ভকালে নির্দেশিত একটি বা সিস্টেমের ডিফল্ট ব্যবহার করবে।

জেআরই বা জেডিকে চালু থাকলে বা ব্যক্তিগত বা "গ্লোবাল" একটিকে পরীক্ষা করে দেখলে এটি আলাদা ফোল্ডার হবে।

তারা খুব এনক্রিপ্ট করা হয়

সংক্ষেপে, পথটি এমন হবে:

$JAVA_HOME/lib/security/cacerts "জেনারেল" এর জন্য, যার কাছে কর্তৃপক্ষের জন্য সমস্ত সিএ রয়েছে এবং এটি বেশ গুরুত্বপূর্ণ।


প্রকারগুলি হ'ল 'কীস্টোর' এবং 'ট্রস্টস্টোর'। অপ্রয়োজনীয় পরিভাষা আবিষ্কার করবেন না দয়া করে।
or

9

আপনি -Dনীচে হিসাবে বৈশিষ্ট্য ব্যবহার করে রানটাইম সময় পাথ উল্লেখ করতে পারেন

-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts 
-Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks

আমার অ্যাপাচি স্পার্ক অ্যাপ্লিকেশনটিতে, আমি --confবিকল্পগুলি ব্যবহার করে সার্টস এবং কীস্টোরের পথ সরবরাহ করতাম এবং extraJavaoptionsনীচের মতো স্পার্ক-জমা দিয়েছিলাম

--conf 'spark.driver.extraJavaOptions= 
-Djavax.net.ssl.trustStore=/home/user/SSL/my-cacerts 
-Djavax.net.ssl.keyStore=/home/user/SSL/server_keystore.jks' 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.