জাভা 7 তে ক্লায়েন্টদের জন্য টিএলএস 1.1 এবং 1.2 সক্ষম করুন


50

জাভা 7 ক্লায়েন্টদের জন্য টিএলএস 1.1 এবং 1.2 কে অক্ষম করে। থেকে জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচার ওরাকল প্রোভাইডার ডকুমেন্টেশন :

যদিও জাভা এসই 7 রিলিজের সানজেএসএসই টিএলএস 1.1 এবং টিএলএস 1.2 সমর্থন করে, কোনও ক্লায়েন্ট সংযোগের জন্য কোনও সংস্করণ ডিফল্টরূপে সক্ষম নয়। কিছু সার্ভারগুলি সঠিকভাবে ফরওয়ার্ড সামঞ্জস্যতা প্রয়োগ করে না এবং টিএলএস 1.1 বা টিএলএস 1.2 ক্লায়েন্টের সাথে কথা বলতে অস্বীকার করে। আন্তঃক্রিয়াশীলতার জন্য, সানজেএসএসই ক্লায়েন্ট সংযোগের জন্য ডিফল্টরূপে টিএলএস 1.1 বা টিএলএস 1.2 সক্ষম করে না।

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

কিভাবে আমি শাসন ব্যবস্থার সক্ষম TLS এর 1.1 এবং 1.2 সিস্টেম জুড়ে ?

দ্রষ্টব্য : পুডল থেকে, আমি প্রশাসনিকভাবে প্রশস্ত SSLv3 সিস্টেমটি অক্ষম করতে চাই। (এসএসএলভি 3 এর সমস্যাগুলি কমপক্ষে 15 বছর ধরে পুডলকে পূর্বাভাস দেয়, তবে জাভা / ওরাকল / বিকাশকারীরা মৌলিক সেরা অনুশীলনগুলিকে সম্মান করে না, তাই আপনার এবং আমার মতো ব্যবহারকারীরা এই জগাখিচুড়ি পরিষ্কার করতেই বাকি রয়েছে)।


জাভা সংস্করণ এখানে:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/bin/java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

: শুধুমাত্র জিনিস যে আমার জন্য কাজ ডিফল্ট SSLContext যেমন এখানে বর্ণিত অস্ত যাবার stackoverflow.com/questions/39157422/...
shmert

উত্তর:


31

আপনি কেবল নীচের সম্পত্তিটি যুক্ত করতে পারেন -Dhttps.protocols=TLSv1.1,TLSv1.2যা https সংযোগের সময় কোন টিএলএস প্রোটোকল সংস্করণ ব্যবহার করা উচিত তা নির্দিষ্ট করতে JVM কে কনফিগার করে।


6
এটি কী করে তার আরও ব্যাখ্যা করুন। অন্যথায়, এটি অস্পষ্ট এবং ভুল হাতে সম্ভাব্য ক্ষতিকারক।
স্টুডিওহ্যাক

1
@ থমাসজ - আমি এখানে অন্যদের সাথে একরকম একমত ... সিস্টেমের বিস্তৃত ভিত্তিতে আমি কীভাবে প্রশাসনিকভাবে এটি করব? এটি কি কোনও মেশিনের কনফিগারেশন ফাইলে যুক্ত হবে? যদি তা হয় তবে ফাইলটি কী এবং আমি এটি কোথায় যুক্ত করব?
jww

3
মাইবাই এই লিঙ্কটি সাহায্য করবে: ব্লগস.অরাকল.com / জাভা- প্ল্যাটফর্ম- গোষ্ঠী / কেন্দ্র / আপনি কমান্ড লাইনের উদাহরণ হিসাবে -Dhttps.protocols সম্পত্তি যুক্ত করতে পারেন উদাহরণস্বরূপ: জাভা -জার yourapplication.jar -Dhttps.protocols = TLSv1 .2 বা অন্য কোথাও অ্যাপ্লিকেশন (সার্ভার) কনফিগারেশন ফাইল। আপনি এটি অতিরিক্ত প্যারাম যুক্ত করে যাচাই করতে পারবেন: -ডাজাভক্স.নেট.বাগ = এর পরে, যখন অ্যাপ্লিকেশনটি https সংযোগটি নিয়ে আলোচনা করবে, এটি প্রোটোকল সংস্করণ সহ সমস্ত আলোচনার তথ্য মুদ্রণ করবে
টমাসজ রেবিজ্যান্ট

এই পরম (https.protocols) জাভা ভার্চুয়াল মেশিনটি কনফিগার করছে যা https সংযোগের সময় প্রোটোকল সংস্করণ ব্যবহার করা উচিত।
টমাসজ রেবিজ্যান্ট

3
@ টমাসজরিবিজ্যান্ট, হ্যাঁ, আপনি ঠিক বলেছেন। উদাহরণস্বরূপ, export JAVA_OPTS="-Dhttps.protocols=TLSv1.1,TLSv1.2"টমক্যাটের setenv.sh যুক্ত করা অ্যাপ্লিকেশন সার্ভারের অ্যাপ্লিকেশন থেকে তৈরি সমস্ত এসএসএল সংযোগের জন্য TLSv1 এবং TLSv2 উভয়কে সক্ষম করে।
জাকি

14

জাভা ১.up ধরে ধরে আপনি আপনার স্টার্টআপ স্ক্রিপ্টে নীচের মতো কিছু যুক্ত করার চেষ্টা করতে পারেন:

JAVACMD="$JAVACMD -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -D\ deployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true"

আরও কিছু পরামর্শ: https://blogs.oracle.com/java-platform-group/entry/java_8_will_use_tls


আপনি যেখানে এই প্রপটিস ডকুমেন্টেশনটি পেয়েছেন সেখানে আমি "-D ডিপ্লোয়মেন্ট.সিকিউরিটির জন্য JAVA7 ডক্সে কোথাও উল্লেখ করেছি তা দেখতে পাচ্ছি না {প্রোটোকলনাম} = সত্য / মিথ্যা;"
রানকোড

@ রনকোড, একেবারে নিশ্চিত নন, তবে এটি উপরে বর্ণিত oracle.com ব্লগে উল্লেখ করা হয়েছে
সিএনটি

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

আমার পক্ষে কাজ করেনি।
শ্রীধর সারনোবাত

9

ম্যাক ওএস এক্সে জাভা 7 এর জন্য, আপনি যান System Preferences > Javaএবং জাভা কন্ট্রোল প্যানেলটি একটি পৃথক উইন্ডোতে খোলে। তারপরে আপনি Advancedট্যাবে যান এবং Advanced Security Settingsবিভাগে নীচে স্ক্রোল করুন Use TLS 1.1এবং Use TLS 1.2চেকবক্সগুলি চেক করুন।

এখানে চিত্র বর্ণনা লিখুন


ধন্যবাদ স্পিফ আমি ইতিমধ্যে টিএলএস 1.0 এবং তার উপরে যেমনটি দেখিয়েছি সেট আপ করেছি। তবে, যখন আমি একটি তৈরি করি SSLSocket(এবং আমি ধরে নিই যে এটি অন্যান্য জাভা প্রোগ্রামগুলিতে ঘটেছিল), টিএলএস 1.0 সক্ষম করা আছে (এবং টিএলএস 1.1 এবং 1.2 উপলব্ধ রয়েছে)।
jwww

3
আপনি এটি আপনার সিস্টেমেও পরীক্ষা করতে পারেন (আগ্রহী হলে)। এই বাগ রিপোর্ট থেকে প্রোটোকলটেষ্ট.জভা ডাউনলোড করুন এবং এটি সম্পাদন করুন। সংকলন এবং সম্পাদন করতে, একটি টার্মিনালে চালান । সক্ষম প্রোটোকলগুলির মধ্যে কী প্রদর্শিত হবে তা দেখুন । javac ProtocolTest.java && java ProtocolTest
jww

2
এটি কেবল ওয়েবস্টার্ট ক্লায়েন্ট এবং অ্যাপলেটগুলির জন্য কাজ করে। এটি জাভা এক্সিকিউটেবল দিয়ে শুরু করা অ্যাপ্লিকেশন সার্ভারগুলিকে প্রভাবিত করে না।
রেকর্ড করা হয়েছে

8

আমি সম্প্রতি এটি নিয়ে গবেষণা করেছি এবং আমি যুক্ত করতে চাই - এটি জেডিকে, ডিপ্লোয়মেন্টের জন্য কাজ করবে না। জেআরইতে চলমান অ্যাপলেট এবং অন্যান্য স্টাফগুলির সাথে সম্পর্কিত rop

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

আপনি SSLContext.getInstance ("TLSv1.2") এর মতো কিছু কোড না লিখে এটি পরিবর্তন করার কোনও উপায় নেই;


4

দেখে মনে হচ্ছে ডিপ্লোয়মেন্ট.সিকিউরিটি। * সেটিংস জাভা অ্যাপলেট এবং জাভা ওয়েব স্টার্ট প্রোগ্রামগুলিতে একটি ডেস্কটপে চলছে। অন্যরা এখানে যেমন উল্লেখ করেছে আপনি এটি উল্লেখ করার জন্য ডিপ্লোয়মেন্ট.প্রেটিটি সম্পাদনা করতে পারেন।

এখানে একটি নিবন্ধ যা দেখায় যে কীভাবে সমস্ত ব্যবহারকারীর জন্য একই স্থাপনা.properties ফাইল স্থাপনের জন্য একটি গ্রুপ নীতি ব্যবহার করতে হবে: http://www.darkoperator.com/blog/2013/1/12/pushing-security-configration-for- জাভা-7-আপডেট -10-মাধ্যমে-gpo.html

দুর্ভাগ্যক্রমে এমন কম্পিউটারে সমস্ত জাভা প্রোগ্রামগুলির জন্য এটি চালু করার কোনও উপায় নেই যা সরাসরি java.exe বা javaw.exe কল করে। আপনাকে জাভা ব্যবহার করে এমন প্রতিটি প্রোগ্রাম সন্ধান করতে হবে, জাভাতে যাওয়ার জন্য প্যারামিটার নির্দিষ্ট করে কনফিগারেশন ফাইলটি সন্ধান করতে হবে এবং এটি পরিবর্তন করতে হবে।

হুল বিড়াল জন্য আমরা এই যাতে হুল বিড়াল থেকে অন্য সার্ভারে সংযোগ TLS ব্যবহার 1.1+ পাস ছিল: -Dhttps.protocols=TLSv1.1,TLSv1.2। লিনাক্স এ এটি সম্পাদনা bin/catalina.shবা তৈরি করে করা যেতে পারে bin/setenv.sh

টমক্যাটটি সার্ভারের দিকে কেবল টিএলএস 1.2 ব্যবহার করতে কী কী লাগে তা আমি জানি না। আমরা অ্যাপাচি এইচটিটিপি সঙ্গে সামনে।


1

আপনি যদি জাভা 7 এর সাথে আটকে থাকেন তবে -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2আপনি JVM এর যুক্তি যুক্ত করতে পারেন ।

দ্রষ্টব্য যে এটিতে বেশ কয়েকটি ক্যাভ্যাট রয়েছে:

  • এটি জাভা 7 আপডেট 95 থেকে শুরু করে বৈধ। রেফারেন্স: https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,- এবং HTTP- র
  • এটি কোনও সিস্টেম-বিস্তৃত সমাধান নয়, যদিও এটি পরিবেশের পরিবর্তনশীল (উদাহরণস্বরূপ JAVA_OPTS) এ সেট করা যেতে পারে , তবে আপনি আপনার জাভা অ্যাপ্লিকেশনগুলিতে এনভ্যাভারের সমর্থনের উপর নির্ভরশীল।

এই ত্রুটিগুলি সত্ত্বেও, আমি মনে করি এটি কার্যকর হতে পারে, বিশেষত যখন প্রোটোকলটি টিএলএস ব্যবহারে আগ্রহী হয় তবে এইচটিটিপিএস নয়, যেমন এলডিএপিএস হয় না।

[আপডেট] আমার সংস্থায়, যা উবুন্টুতে সার্ভারগুলির পুল চালায়, আমরা বুঝতে পেরেছি যে ওপেনজেডকে of-এর 121 আপডেট করাও এটি সঠিকভাবে প্রয়োগ করার জন্য যথেষ্ট ছিল না। আমরা কাজ করার আগে 181 আপডেট করার জন্য সমস্ত সার্ভার আপডেট করেছি।

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