মারাত্মক সতর্কতা পেয়েছে: এসএসএলহ্যান্ডশেকএক্সপেশনের মাধ্যমে হ্যান্ডশেক_ফিলার


134

অনুমোদিত এসএসএল সংযোগ নিয়ে আমার একটি সমস্যা আছে। আমি স্ট্রটস অ্যাকশন তৈরি করেছি যা ক্লায়েন্ট অনুমোদিত অনুমোদিত SSL শংসাপত্রের সাথে বাহ্যিক সার্ভারের সাথে সংযুক্ত। আমার অ্যাকশনে আমি ব্যাংক সার্ভারে কিছু ডেটা প্রেরণের চেষ্টা করছি তবে কোনও ভাগ্য ছাড়াই, কারণ সার্ভারের ফলে আমার নিম্নলিখিত ত্রুটিটি রয়েছে:

error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

আমার অ্যাকশন ক্লাস থেকে আমার পদ্ধতি যা সার্ভারে ডেটা প্রেরণ করে

//Getting external IP from host
    URL whatismyip = new URL("http://automation.whatismyip.com/n09230945.asp");
    BufferedReader inIP = new BufferedReader(new InputStreamReader(whatismyip.openStream()));

    String IPStr = inIP.readLine(); //IP as a String

    Merchant merchant;

    System.out.println("amount: " + amount + ", currency: " + currency + ", clientIp: " + IPStr + ", description: " + description);

    try {

        merchant = new Merchant(context.getRealPath("/") + "merchant.properties");

    } catch (ConfigurationException e) {

        Logger.getLogger(HomeAction.class.getName()).log(Level.INFO, "message", e);
        System.err.println("error: " + e.getMessage());
        return ERROR;
    }

    String result = merchant.sendTransData(amount, currency, IPStr, description);

    System.out.println("result: " + result);

    return SUCCESS;

আমার Merchant.properties ফাইল:

bank.server.url=https://-servernameandport-/
https.cipher=-cipher-

keystore.file=-key-.jks
keystore.type=JKS
keystore.password=-password-
ecomm.server.version=2.0

encoding.source=UTF-8
encoding.native=UTF-8

প্রথমবার আমি ভেবেছিলাম এটি একটি শংসাপত্রের সমস্যা, আমি এটি .pfx থেকে .jks এ রূপান্তর করি, তবে আমার কোনও ত্রুটি রয়েছে, কোনও পরিবর্তন ছাড়াই।


আপনি কি নিজের ট্রস্টস্টোরে সার্ভারের এসএসএল শংসাপত্র যুক্ত করেছেন?
হ্যাপিমিল

দুঃখিত, এর অর্থ কী তা আমি বুঝতে পারি না, আমি
এসএসএলে

আমি ধরে নেব যে আপনার অ্যাপটি জাভা ডিফল্ট ট্রাস্টস্টোরটি ব্যবহার করছে। ডিফল্ট ট্রস্টস্টোরটি হ'ল <জাভা-হোম> / লিবিব / সুরক্ষা / ক্যাশেটারস। আপনার ব্রাউজারের সাথে সার্ভারের ইউআরএল খুলুন এবং সমস্ত এসএসএল শংসাপত্রগুলি ডাউনলোড করুন; যে কোনও চেইন / ইন্টারমিডিয়েট শংসাপত্র সহ। তারপরে ট্রস্টস্টোরে এই সমস্ত শংসাপত্র যুক্ত করুন।
হ্যাপিমিল

আমি ব্রাউজারে url খুলতে পারি না, ক্লায়েন্ট প্রমাণীকরণ শংসাপত্রের কারণে, আমি এই লিঙ্কটিতে কেবলমাত্র ক্লায়েন্টদের কাছ থেকে পাওয়া নির্দিষ্ট পরামিতিগুলি পাঠাতে পারি।
ডিনিস

শুধু ইউআরএল খুলুন। আপনি আপনার ব্রাউজারে দেখতে পাচ্ছেন এমন সমস্ত ত্রুটি উপেক্ষা করুন। আপনি যখন url অ্যাক্সেস করেন, আপনার ব্রাউজারের ঠিকানা বারে একটি প্যাডলক আইকনটি দেখতে হবে। এটিতে ক্লিক করুন এবং সার্ভারের এসএসএল শংসাপত্রটি ডাউনলোড করুন।
শুক্রবার

উত্তর:


251

হ্যান্ডশেক ব্যর্থতা বিভিন্ন কারণে ঘটতে পারে:

  • ক্লায়েন্ট এবং সার্ভার দ্বারা ব্যবহারে বেমানান সাইফার স্যুট। এটির জন্য ক্লায়েন্টকে সার্ভার দ্বারা সমর্থিত একটি সাইফার স্যুট (বা সক্ষম) ব্যবহার করতে হবে।
  • এসএসএলের বেমানান সংস্করণ ব্যবহারে রয়েছে (সার্ভারটি কেবলমাত্র টিএলএস ভি 1 গ্রহণ করতে পারে, যখন ক্লায়েন্টটি কেবল এসএসএল ভি 3 ব্যবহারে সক্ষম)। আবার, ক্লায়েন্টকে নিশ্চিত করতে হবে যে এটি SSL / TLS প্রোটোকলের একটি সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করে।
  • সার্ভার শংসাপত্রের জন্য অসম্পূর্ণ বিশ্বাসের পথ; সার্ভারের শংসাপত্রটি সম্ভবত ক্লায়েন্টের দ্বারা বিশ্বাসযোগ্য নয়। এটি সাধারণত আরও ভার্বোজের ত্রুটির ফলস্বরূপ ঘটে তবে এটি বেশ সম্ভব। সাধারণত ফিক্সটি হ'ল ক্লায়েন্টের বিশ্বাসের দোকানে সার্ভারের সিএ শংসাপত্রটি আমদানি করা।
  • শংসাপত্রটি একটি অন্য ডোমেনের জন্য জারি করা হয়। আবার, এর ফলে আরও ভার্জোজ মেসেজ আসত, তবে কারণটি যদি হয় তবে আমি এখানে ঠিক করবো। এই ক্ষেত্রে সমাধানটি সঠিক শংসাপত্রটি ব্যবহার করার জন্য সার্ভারটি পাবেন (এটি আপনার বলে মনে হয় না)।

যেহেতু, অন্তর্নিহিত ব্যর্থতাটি পিনপয়েন্ট করা যায় না -Djavax.net.debug=all, তাই এসএসএল সংযোগটি ডিবাগিং প্রতিষ্ঠিত করতে পতাকাটি স্যুইচ করা ভাল better ডিবাগটি চালু হওয়ার সাথে সাথে, আপনি হ্যান্ডশেকটিতে কী ক্রিয়াকলাপ ব্যর্থ হয়েছে তা নির্ধারণ করতে পারেন।

হালনাগাদ

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

বেশিরভাগ ক্লায়েন্ট / গ্রন্থাগারগুলি শংসাপত্রের বৈধতার জন্য জেভিএম দ্বারা ব্যবহৃত ট্রাস্ট স্টোরের উপর নির্ভর করবে। বেশিরভাগ ক্ষেত্রে, cacertsএটি JRE_HOME / lib / সুরক্ষা ডিরেক্টরিতে ফাইল হবে । যদি জেভিএম সিস্টেমের সম্পত্তি ব্যবহার করে ট্রাস্ট স্টোরের অবস্থান নির্দিষ্ট করা থাকে javax.net.ssl.trustStore, তবে সেই পথে স্টোরটি সাধারণত ক্লায়েন্ট লাইব্রেরি দ্বারা ব্যবহৃত হয়। যদি আপনার সন্দেহ হয় তবে আপনার Merchantক্লাসটি একবার দেখুন এবং সংযোগটি তৈরি করতে এটি যে শ্রেণি / গ্রন্থাগারটি ব্যবহার করছে তা সন্ধান করুন।

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

সতর্কতা : ট্রাস্ট স্টোরটি মূলত আপনার বিশ্বাস করা সমস্ত সিএর তালিকা। যদি আপনি এমন কোনও শংসাপত্র স্থাপন করেন যা কোনও সিএর সাথে সম্পর্কিত নয় যা আপনি বিশ্বাস করেন না, তবে সেই সত্তার দ্বারা প্রদত্ত শংসাপত্র প্রাপ্ত সাইটগুলিতে এসএসএল / টিএলএস সংযোগগুলি ব্যক্তিগত কী উপলব্ধ থাকলে ডিক্রিপ্ট করা যেতে পারে।

আপডেট # 2: জেএসএসই ট্রেসের আউটপুট বোঝা

জেভিএম দ্বারা ব্যবহৃত কীস্টোর এবং ট্রাস্টস্টোরগুলি সাধারণত একেবারে নীচের মতো শুরুতে তালিকাভুক্ত হয়:

keyStore is : 
keyStore type is : jks
keyStore provider is : 
init keystore
init keymanager of type SunX509
trustStore is: C:\Java\jdk1.6.0_21\jre\lib\security\cacerts
trustStore type is : jks
trustStore provider is : 

যদি ভুল ট্রস্টস্টোর ব্যবহার করা হয়, তবে আপনাকে সার্ভারের শংসাপত্রটি ডানদিক থেকে আবার আমদানি করতে হবে, বা তালিকাভুক্তটি ব্যবহার করার জন্য সার্ভারটি পুনরায় কনফিগার করতে হবে (যদি আপনার একাধিক জেভিএম থাকে তবে প্রস্তাবিত নয়) এবং এগুলি সমস্তই আলাদা আলাদা জন্য ব্যবহৃত হয় চাহিদা).

বিশ্বাসের শংসাপত্রের তালিকায় প্রয়োজনীয় শংসাপত্র রয়েছে কিনা তা আপনি যদি যাচাই করতে চান তবে তার জন্য এখানে একটি বিভাগ রয়েছে যা শুরু হয়:

adding as trusted cert:
  Subject: CN=blah, O=blah, C=blah
  Issuer:  CN=biggerblah, O=biggerblah, C=biggerblah
  Algorithm: RSA; Serial number: yadda
  Valid from SomeDate until SomeDate

সার্ভারের সিএ সাবজেক্ট কিনা তা আপনাকে দেখতে হবে।

হ্যান্ডশেক প্রক্রিয়াটিতে কয়েকটি স্বতন্ত্র এন্ট্রি থাকবে (এগুলি বিস্তারিতভাবে জানার জন্য আপনাকে এসএসএল জানা দরকার, তবে বর্তমান সমস্যাটি ডিবাগ করার উদ্দেশ্যে, সার্ভারহেলোতে সাধারণত একটি হ্যান্ডশেক_ফিলার রিপোর্ট করা যথেষ্ট হবে)

1. ক্লায়েন্টহেলো

সংযোগ শুরুর সময় এন্ট্রিগুলির একটি সিরিজ জানানো হবে। এসএসএল / টিএলএস সংযোগ সেটআপে ক্লায়েন্ট কর্তৃক প্রেরিত প্রথম বার্তাটি হ'ল ক্লায়েন্টহেলো বার্তা, সাধারণত লগগুলিতে এই হিসাবে রিপোর্ট করা হয়:

*** ClientHello, TLSv1
RandomCookie:  GMT: 1291302508 bytes = { some byte array }
Session ID:  {}
Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA]
Compression Methods:  { 0 }
***

ব্যবহৃত সাইফার স্যুটগুলি নোট করুন। এটি আপনার মার্চেন্ট.প্রপার্টি ফাইলগুলিতে প্রবেশের সাথে একমত হতে পারে, কারণ একই সম্মেলনটি ব্যাংকের লাইব্রেরি দ্বারা নিযুক্ত হতে পারে। যদি ব্যবহৃত কনভেনশনটি পৃথক হয়, তবে উদ্বেগের কারণ নেই কারণ সার্ভারহেলো তাই বলে দেবে, যদি সাইফার স্যুইটটি বেমানান হয়।

2. সার্ভারহেলো

সার্ভারটি একটি সার্ভারহেলোর সাথে প্রতিক্রিয়া জানায়, এটি সংকেত সেটআপটি এগিয়ে যেতে পারে কিনা তা নির্দেশ করে। লগগুলিতে এন্ট্রিগুলি সাধারণত নিম্নলিখিত ধরণের হয়:

*** ServerHello, TLSv1
RandomCookie:  GMT: 1291302499 bytes = { some byte array}
Cipher Suite: SSL_RSA_WITH_RC4_128_SHA
Compression Method: 0
***

সিফার স্যুটটি এটি চয়ন করেছে তা নোট করুন; এটি সার্ভার এবং ক্লায়েন্ট উভয়ের জন্যই সেরা স্যুট। সাধারণত কোনও ত্রুটি থাকলে সাইবার স্যুট নির্দিষ্ট করা হয় না। সার্ভারের শংসাপত্র (এবং optionচ্ছিকভাবে পুরো শৃঙ্খলা) সার্ভার দ্বারা প্রেরণ করা হয়েছে এবং এন্ট্রিগুলিতে এটি পাওয়া যাবে:

*** Certificate chain
chain [0] = [
[
  Version: V3
  Subject: CN=server, O=server's org, L=server's location, ST =Server's state, C=Server's country
  Signature Algorithm: SHA1withRSA, OID = some identifer

.... the rest of the certificate
***

শংসাপত্রের যাচাইকরণ সফল হলে আপনি এর মতো একটি এন্ট্রি পাবেন:

Found trusted certificate:
[
[
  Version: V1
  Subject: OU=Server's CA, O="Server's CA's company name", C=CA's country
  Signature Algorithm: SHA1withRSA, OID = some identifier

উপরের একটি পদক্ষেপ সফল হতে পারে না, যার ফলে হ্যান্ডশেক_ফিলার হয়েছিল, হ্যান্ডশেকটি সাধারণত এই পর্যায়ে সম্পূর্ণ হয় (আসলে নয়, তবে হ্যান্ডশেকের পরবর্তী পর্যায়ে সাধারণত হ্যান্ডশেক ব্যর্থতার কারণ হয় না)। আপনাকে কোন ধাপটি ব্যর্থ হয়েছে তা নির্ধারণ করতে হবে এবং প্রশ্নের বার্তাটি আপডেট হিসাবে যথাযথ বার্তাটি পোস্ট করতে হবে (যদি না আপনি ইতিমধ্যে বার্তাটি বুঝতে না পেরে থাকেন এবং এটি সমাধান করার জন্য আপনি কী জানেন না)।


আপনি যা কিছু পেয়েছেন দয়া করে পোস্ট করুন, আপনি যদি পারেন তবে আমি উত্তরটিকে আরও একটি নির্দিষ্ট দিয়ে আপডেট করতে পারব।
ভিনিত রেনল্ডস

1
ঠিক আছে, বিনীত, আমি কীভাবে এটি মোকাবেলা করব তা বুঝতে পারি না, আমি ইতিমধ্যে ক্লান্ত হয়ে পড়েছি। আমি ওপেনএসএল "ওপেনএসএল এস_ক্লিয়েন্ট-কানেক্ট সার্ভারনাম: 4402" দিয়ে সার্ভারের URL পরীক্ষা করার একটি উপায় পেয়েছি এবং আমি কী পেয়েছি তা দেখুন: img225.imageshack.us/img225/8999/screenshoturr.png
ডেনিস

@হস, দেখে মনে হচ্ছে যে সার্ভারের শংসাপত্রটি এমন কোনও সত্তা দ্বারা জারি করা হয়েছিল যা ওপেনএসএসএল দ্বারা ব্যবহৃত ট্রাস্ট স্টোরে উপস্থিত নেই এবং সম্ভবত এটি আপনার সার্ভারের (ক্লায়েন্ট) দ্বারা ব্যবহৃত ট্রাস্ট স্টোরে উপস্থিত হয় না , যখন এটি সংযোগ করে সার্ভার. সেক্ষেত্রে আপনাকে সিএর শংসাপত্র আমদানি করতে হবে যা আপনার ক্লায়েন্টের (ওপেনএসএসএল / আপনার সার্ভার) ট্রাস্ট স্টোরে শংসাপত্র জারি করেছে ( এবং সার্ভার নয়)।
ভিনিতে রেনল্ডস

1
ঠিক আছে, এটি ক্যাসর্টগুলির উপর নির্ভর করছে। তবে আপনি নেটওয়ার্ক ডিবাগের আউটপুট বুঝতে পারলেই এটি নির্ধারণ করতে পারেন। আপনি যদি এটি যাচাই করতে চান তবে আপনাকে keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacertsবিষয়বস্তু মুদ্রণের জন্য কমান্ডটি ব্যবহার করতে হবে । তারপরে ক্যাসর্টে থাকা শংসাপত্রগুলি ব্যাংকের শংসাপত্রের সিএ-এর সাথে মেলে কিনা তা যাচাই করুন।
ভিনিত রেনল্ডস

5
ডিফল্ট সাধারণত হয় changeit। যদি না এটি পরিবর্তন করা হয়।
ভিনিত রেনল্ডস

20

জাভা ক্রিপ্টোগ্রাফি এক্সটেনশন ( জেসিই ) আনলিমিটেড স্ট্রেনথ ( জেডিকে 7 এর জন্য | জেডিকে 8 এর জন্য ) ইনস্টল করা এই বাগটি ঠিক করতে পারে। ফাইলটি আনজিপ করুন এবং ইনস্টল করতে রিডমি অনুসরণ করুন।


16

হ্যান্ডশেক ব্যর্থতা একটি বগি টিএলএসভি 1 প্রোটোকল বাস্তবায়ন হতে পারে।

আমাদের ক্ষেত্রে এটি জাভা 7 এর সাথে সহায়তা করেছে:

java -Dhttps.protocols=TLSv1.2,TLSv1.1,TLSv1 

Jvm এই আদেশে আলোচনা করবে। সর্বশেষ আপডেটের সাথে সার্ভারগুলি 1.2 করবে, বগিগুলি নীচে ভি 1 এ চলে যাবে এবং এটি জাভা 7 তে অনুরূপ ভি 1 এর সাথে কাজ করে।


1
এটি আমাকে সাহায্য করেছিল। আমার ক্লায়েন্টহেলো ছিল, কিন্তু কোনও সার্ভার নেই, শেষটি বেশ আকস্মিক ছিল। এটি জাভা me এ আমার জন্য এটি ঠিক করে দিয়েছে আপনাকে অনেক ধন্যবাদ।
কুমারী 47

15

ক্লায়েন্টের যখন কোনও শংসাপত্র উপস্থাপন করার প্রয়োজন হয় তখন এটিও সুখী হতে পারে। সার্ভার শংসাপত্র শৃঙ্খলা তালিকাভুক্ত করার পরে, নিম্নলিখিতগুলি ঘটতে পারে:

৩. শংসাপত্রের অনুরোধ সার্ভার ক্লায়েন্টের কাছ থেকে একটি শংসাপত্রের অনুরোধ জারি করবে। অনুরোধটি সার্ভারটি গ্রহণ করে এমন সমস্ত শংসাপত্রের তালিকা তৈরি করবে।

*** CertificateRequest
Cert Types: RSA
Cert Authorities:
<CN=blah, OU=blah, O=blah, L=blah, ST=blah, C=blah>
<CN=yadda, DC=yadda, DC=yadda>
<CN=moreblah, OU=moreblah, O=moreblah, C=moreblah>
<CN=moreyada, OU=moreyada, O=moreyada, C=moreyada>
... the rest of the request
*** ServerHelloDone

4. ক্লায়েন্ট শংসাপত্র চেইন এটি শংসাপত্র ক্লায়েন্ট সার্ভারে প্রেরণ করছে।

*** Certificate chain
chain [0] = [
[
  Version: V3
  Subject: EMAILADDRESS=client's email, CN=client, OU=client's ou, O=client's Org, L=client's location, ST=client's state, C=client's Country
  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
  ... the rest of the certificate
*** ClientKeyExchange, RSA PreMasterSecret, TLSv1    
... key exchange info 

যদি চেইনে কোনও শংসাপত্র না থাকে এবং সার্ভারের একটির প্রয়োজন হয় তবে আপনি এখানে হ্যান্ডশেক ত্রুটি পাবেন। সম্ভাব্য কারণ হ'ল আপনার শংসাপত্রের পথটি পাওয়া যায় নি।

৫. শংসাপত্র যাচাই করুন ক্লায়েন্ট সার্ভারকে শংসাপত্রটি যাচাই করতে বলে

*** CertificateVerify
... payload of verify check

আপনি যদি কোনও শংসাপত্র প্রেরণ করছেন তবেই এই পদক্ষেপটি ঘটবে।

6. সমাপ্ত সার্ভার একটি যাচাই প্রতিক্রিয়া সঙ্গে প্রতিক্রিয়া জানাবে

*** Finished
verify_data:  { 345, ... }

আমার ক্ষেত্রে এটি মনে হয় সমস্ত পদক্ষেপগুলি ঠিক আছে তবে তবুও হ্যান্ডশেক ত্রুটিটি পাওয়া যায়।
টিবি

খুব সুন্দর উত্তর ... তবে এগুলি আমার হ্যান্ডশেক ব্যর্থতায় ঠিক আছে তবে তবুও আমার ব্যর্থতা আছে। আপনি কি আমার অনুরূপ প্রশ্নটি দেখতে পারেন?
টিবি

ক্লায়েন্টের শংসাপত্র উপস্থাপনে ব্যর্থতা টিএলএসে কোনও ধরণের ত্রুটি নয়। যদি সার্ভারটির ক্লায়েন্ট শংসাপত্রের প্রয়োজন হয় এবং একটি উপস্থাপিত না হয় তবে এটি সংযোগটি বন্ধ করে দেবে।
লার্নের মারকুইস

@ ইজেপি এটি সত্য যে এটি টিএলএস-তে কোনও ত্রুটি নয় তবে ব্যর্থ সংযোগটি জাভা কোডের একটি ত্রুটি হিসাবে দেখা যাচ্ছে।
ব্রিগে

1
@ ব্রিগ কিন্তু সতর্কতা হিসাবে নয়, যা এই উত্তরটি বলে, এবং প্রশ্নটি কী।
লার্নের মারকুইস

15

আমি মনে করি না যে এটি প্রথম প্রশ্নকর্তাকে সমস্যার সমাধান করে, তবে গুগলদের উত্তরের জন্য এখানে আসার জন্য:


৫১ আপডেটে জাভা ১.৮ নিষিদ্ধ [1] আরসি 4 সিফারগুলি ডিফল্টরূপে, যেমন আমরা প্রকাশের নোট পৃষ্ঠাতে দেখতে পাচ্ছি:

বাগ ফিক্স: আরসি 4 সাইফার স্যুট নিষিদ্ধ করুন

আরসি 4 এখন আপোস করা সাইফার হিসাবে বিবেচিত।

আরসি 4 সিফার স্যুটগুলিকে ক্লায়েন্ট এবং সার্ভার ডিফল্ট সক্ষম সাইফার স্যুট উভয়টি ওরাকল জেএসএসই প্রয়োগের মধ্যে থেকে সরানো হয়েছে। এই সাইফার স্যুটগুলি এখনও SSLEngine.setEnabledCipherSuites()এবং SSLSocket.setEnabledCipherSuites()পদ্ধতিগুলি দ্বারা সক্ষম করা যেতে পারে । JDK-8077109 (সর্বজনীন নয়) দেখুন।

যদি আপনার সার্ভারটির এই সাইফারের জন্য শক্তিশালী পছন্দ থাকে (বা কেবল এই সাইফারটি ব্যবহার করুন) handshake_failureএটি জাভাতে ট্রিগার করতে পারে ।

আপনি আরসি 4 সিফারগুলি সক্ষম করে সার্ভারের সাথে সংযোগ পরীক্ষা করতে পারেন (প্রথমে কোনওটি enabledট্রিগার করে কিনা তা দেখার জন্য যুক্তি ছাড়াই চেষ্টা করুন handshake_failure, তারপরে সেট করুন enabled:

import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;

import java.util.Arrays;

/** Establish a SSL connection to a host and port, writes a byte and
 * prints the response. See
 * http://confluence.atlassian.com/display/JIRA/Connecting+to+SSL+services
 */
public class SSLRC4Poke {
    public static void main(String[] args) {
        String[] cyphers;
        if (args.length < 2) {
            System.out.println("Usage: "+SSLRC4Poke.class.getName()+" <host> <port> enable");
            System.exit(1);
        }
        try {
            SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
            SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(args[0], Integer.parseInt(args[1]));
        
            cyphers = sslsocketfactory.getSupportedCipherSuites();
            if (args.length ==3){
                sslsocket.setEnabledCipherSuites(new String[]{
                    "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5",
                    "SSL_DH_anon_WITH_RC4_128_MD5",
                    "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
                    "SSL_RSA_WITH_RC4_128_MD5",
                    "SSL_RSA_WITH_RC4_128_SHA",
                    "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
                    "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
                    "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
                    "TLS_ECDH_RSA_WITH_RC4_128_SHA",
                    "TLS_ECDH_anon_WITH_RC4_128_SHA",
                    "TLS_KRB5_EXPORT_WITH_RC4_40_MD5",
                    "TLS_KRB5_EXPORT_WITH_RC4_40_SHA",
                    "TLS_KRB5_WITH_RC4_128_MD5",
                    "TLS_KRB5_WITH_RC4_128_SHA"
                });     
            }

            InputStream in = sslsocket.getInputStream();
            OutputStream out = sslsocket.getOutputStream();

            // Write a test byte to get a reaction :)
            out.write(1);

            while (in.available() > 0) {
                System.out.print(in.read());
            }
            System.out.println("Successfully connected");

        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

1 - https://www.java.com/en/download/faq/release_changes.xml


10

আমি JDK 1.7 ব্যবহার করার চেষ্টা করার সময় আমার এই ত্রুটি রয়েছে। আমি যখন আমার জেডিকে jdk1.8.0_66 এ আপগ্রেড করেছি তখন সব ঠিকঠাক কাজ শুরু করে।

সুতরাং এই সমস্যার সহজ সমাধান হতে পারে - আপনার জেডিকে আপগ্রেড করুন এবং এটি ভালভাবে কাজ শুরু করতে পারে।


4
খুশী হলাম। জেডিকে আপগ্রেড করার সহজ সমাধান? : D আপনি কি জানেন যে পরিবেশটি যেখানে করা হচ্ছে তার উপর নির্ভর করে এটি কতটা জটিল হতে পারে? ধরুন অ্যামাজন জেডিকে 7 চালিয়েছে এবং এখন হঠাৎ জেডিকে 8 এ আপগ্রেড করা দরকার ... দুর্দান্ত!
আর্টুরাস এম

1
একটি সাধারণ গৌণ সংস্করণ আপগ্রেড আমার জন্য এই সমস্যাটি সমাধান করেছে .. জেডিকে ১১.০.১ থেকে ১১.০..6
ক্লিন্ট

4

আমার ক্ষেত্রে, শংসাপত্রটি আমদানি করা হয়, ত্রুটি থেকে যায়, System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,SSLv3");সংযোগের আগে যোগ করে এটি সমাধান করে


জাভা আমার জন্য কাজ করেছেন 1.8। ধন্যবাদ :)
সুপুন অমরসিংহে

3

ধরে নিই যে আপনি যথাযথ এসএসএল / টিএলএস প্রোটোকল ব্যবহার করছেন, আপনার keyStoreএবং সঠিকভাবে কনফিগার trustStoreকরেছেন এবং নিশ্চিত করেছেন যে শংসাপত্রগুলির সাথে তাদের কোনও সমস্যা নেই, আপনাকে আপনার সুরক্ষা অ্যালগরিদমগুলি শক্তিশালী করতে হতে পারে ।

ভিনিতের উত্তরে উল্লিখিত হিসাবে , আপনি এই ত্রুটিটি পাওয়ার সম্ভাব্য কারণ হ'ল অসম্পূর্ণ সাইফার স্যুট ব্যবহার করা। জাভা ক্রিপ্টোগ্রাফি এক্সটেনশান (জেসিই) তে প্রদত্ত একটিগুলির সাথে আমার local_policyএবং US_export_policyজারিকে আমার জেডিকে securityফোল্ডারে আপডেট করে আমি হ্যান্ডশেকটি সফলভাবে শেষ করতে সক্ষম হয়েছি।


2

আমি আজ একই সমস্যাটি পূরণ করেছি OkHttp ক্লায়েন্টের সাথে একটি https ভিত্তিক url পেতে। এটি এইচটিপিএস প্রোটোকল সংস্করণ এবং সার্ভারের পাশ এবং ক্লায়েন্টের দিকের মধ্যে সাইফার পদ্ধতির অমিলের কারণে ঘটেছিল

1) আপনার ওয়েবসাইট https প্রোটোকল সংস্করণ এবং সিফার পদ্ধতি পরীক্ষা করুন।

openssl>s_client -connect your_website.com:443 -showcerts

আপনি অনেক বিশদ তথ্য পাবেন, মূল তথ্য নীচে তালিকাভুক্ত করা হবে:

SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
2) আপনার HTTP ক্লায়েন্টটি কনফিগার করুন, উদাহরণস্বরূপ, OkHttp ক্লায়েন্টের ক্ষেত্রে:
@Test()
public void testHttpsByOkHttp() {
    ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
            .tlsVersions(TlsVersion.TLS_1_0) //protocol version
            .cipherSuites(
                    CipherSuite.TLS_RSA_WITH_RC4_128_SHA, //cipher method
                    CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
                    CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                    CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256)
            .build();

    OkHttpClient client = new OkHttpClient();
    client.setConnectionSpecs(Collections.singletonList(spec));
    Request request = new Request.Builder().url("https://your_website.com/").build();
    try {
        Response response = client.newCall(request).execute();
        if(response.isSuccessful()){
            logger.debug("result= {}", response.body().string());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

এটি আমরা যা চাই তা পাবে।


2

আমি একটি এইচটিটিপিএস সার্ভার পেয়েছি যা আমার জাভা ক্লায়েন্ট প্রক্রিয়াটি কনফিগার করা থাকলে এই পথে ব্যর্থ হয়েছিল

-Djsse.enableSNIExtension=false

সাফল্যের সাথে শেষ handshake_failureহওয়ার পরে ServerHelloতবে ডেটা স্ট্রিম শুরু হওয়ার আগেই সংযোগটি ব্যর্থ হয়েছিল।

সমস্যা চিহ্নিত করার মতো কোনও পরিষ্কার ত্রুটি বার্তা ছিল না, ত্রুটিটি ঠিক এর মতো দেখায়

main, READ: TLSv1.2 Alert, length = 2
main, RECV TLSv1.2 ALERT:  fatal, handshake_failure
%% Invalidated:  [Session-3, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384]
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

-Djsse.enableSNIExtension=falseবিকল্পটি না করে এবং চেষ্টা করেই আমি বিষয়টি আলাদা করে দিয়েছি


জিডিএএক্স স্যান্ডবক্সের সাথে সংযোগ করার সময় আমি একই ত্রুটি পাচ্ছি, এর কোনও সমাধান?
নিতিন ভাভদিয়া

1

খনিটি একটি TLSসংস্করণ বেমানান ত্রুটি ছিল।

আগে এটি ছিল TLSv1আমি এটি পরিবর্তন করেছিলাম এটি TLSV1.2আমার সমস্যার সমাধান করে।


1

আমি com.google.api HTTP ক্লায়েন্ট ব্যবহার করছি। আমি যখন কোনও অভ্যন্তরীণ সংস্থার সাইটের সাথে যোগাযোগ করি তখন আমি এই সমস্যাটি পেয়েছিলাম যখন আমি ভুলভাবে HTTP এর পরিবর্তে https ব্যবহার করেছি।

main, READ: TLSv1.2 Alert, length = 2
main, RECV TLSv1.2 ALERT:  fatal, handshake_failure
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
main, IOException in getSession():  javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
main, called close()
main, called closeInternal(true)
262 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection  - Connection shut down
main, called close()
main, called closeInternal(true)
263 [main] DEBUG org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager  - Released connection is not reusable.
263 [main] DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Releasing connection [HttpRoute[{s}->https://<I-replaced>]][null]
263 [main] DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Notifying no-one, there are no waiting threads
Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:431)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:339)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
    at com.google.api.client.http.apache.ApacheHttpRequest.execute(ApacheHttpRequest.java:67)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:960)

না আপনি পারবেন না। সার্ভার টিএলএস না বললে টিএলএস সতর্কতা প্রেরণ করতে পারে না।
লার্নের মারকুইস

আমি আমার প্রোগ্রামটি থেকে আউটপুটটি প্রদর্শন করতে আমার মন্তব্য আপডেট করেছি। এটা বাস্তব. আপনি যদি নিচের ভোটটি সরিয়ে ফেলেন তবে এটির প্রশংসা করবে।
thebiggestlebowski

এটি বাস্তব, তবে এটি একটি প্লেইন টেক্সট সার্ভারে টিএলএস কথা বলার কারণে হয় না। একটি প্লেইনটেক্সট সার্ভার সংজ্ঞা অনুসারে টিএলএস নিয়ে কথা বলছে না, এবং সুতরাং আপনি সংজ্ঞা দ্বারা এটি থেকে সম্ভবত কোনও টিএলএস সতর্কতা গ্রহণ করতে পারবেন না। আপনার উত্তর কে কমিয়ে দিয়েছে সে সম্পর্কে আপনার কাছে কোনও তথ্য নেই।
লার্নের মারকুইস

আমি ধরে নিয়েছি যে আপনি ভোট দিয়েছেন - আমার যদি ক্ষমা না হয় যদি তা না হয়। আমার ত্রুটির বার্তাটি এই প্রশ্নের শিরোনামের সাথে ঠিক মেলে। এই ত্রুটি বার্তাটি পেতে এটি একটি বৈধ পাথ / পরীক্ষার কেস এবং আমার কাছে একটি সমাধান রয়েছে যা অন্যকে সাহায্য করতে পারে। সম্মানজনকভাবে, আমি মনে করি না যে এটি টিএলএস সার্ভারের ত্রুটির প্রতিক্রিয়ার কারণে হয়েছে কিনা। কেউ গুগল থেকে এখানে অবতরণ করবে এবং আমার উত্তর যদি তারা একই ভুল করে তবে তা হয়ত সহায়তা করবে।
thebiggestlebowski

আপনার ত্রুটি বার্তা সম্পর্কে আমি কিছু বলিনি। আমি আপনার ভুল দাবির বিষয়ে মন্তব্য করছি যে এটি 'ভুলভাবে এইচটিটিপিএসের পরিবর্তে এইচটিটিপিএস ব্যবহার করার কারণে হয়েছে'। এটি নয় এবং এটি হতেও পারে না, কারণ যে কারণে আমি বলেছি এবং যা আপনি কোনওভাবে সম্বোধন করেননি। এইচটিটিপি ব্যবহার করা অবশ্যই এটিকে দূরে সরিয়ে দেবে, স্পষ্টতই, যেহেতু প্লেইন টেক্সটে কোনও টিএলএস সতর্কতা নেই, তবে অন্তর্নিহিত সমস্যাটির সমাধান করে না।
লার্নের মারকুইস


1

Ugg! এটি কেবল আমার জন্য জাভা সংস্করণের সমস্যা হতে পারে। আমি জেআরই 1.6 ব্যবহার করে হ্যান্ডশেক ত্রুটি পেয়েছি এবং জেআরই 1.8.0_144 ব্যবহার করে সবকিছু ঠিকঠাকভাবে কাজ করেছে worked


0

দাবি অস্বীকার: উত্তরটি অনেকের পক্ষে সহায়ক হবে কিনা তা আমি জানি না, কেবল ভাগ করে নেওয়া কারণ এটি হতে পারে।

এক্সএমএল (এসওএপি) অনুরোধ প্রেরণের জন্য প্যারাসফট সোয়েস্ট ব্যবহার করার সময় আমি এই ত্রুটিটি পেয়েছি।

সমস্যাটি হ'ল আমি শংসাপত্রটি যুক্ত করার পরে এবং এটি প্রমাণীকরণের পরে ড্রপডাউন থেকে ভুল নামটি নির্বাচন করেছি।


0

আমার ক্ষেত্রে, ওয়েবসাইটটি কেবল TLSv1.2 ব্যবহার করতে পারে। এবং আমি অ্যাপাচি httpclient 4.5.5 ব্যবহার করি, আমি এই কোডটি ব্যবহার করি এবং এটি সমাধানের জন্য jce ইনস্টল করি (JDK1.7):

jce

jdk7 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

jdk 8 http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

কোড:

SSLContext sslContext = SSLContext.getDefault();

  SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(
      sslContext,
      new String[]{"TLSv1.2"}, // important
      null,
      NoopHostnameVerifier.INSTANCE);

  Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
      .register("https", sslConnectionFactory)
      .register("http", PlainConnectionSocketFactory.INSTANCE)
      .build();

  HttpClientConnectionManager ccm = new BasicHttpClientConnectionManager(registry);
  httpclient = HttpClientBuilder.create().
      .setSSLSocketFactory(sslConnectionFactory)
      .setConnectionManager(ccm)
      .build();

0

বিকাশকারী (আইটেম 1) এবং সিস্টেম অ্যাডমিন (আইটেম 2 এবং 3) দৃষ্টিকোণ থেকে সমস্যা সমাধানের জন্য:

  1. এর মাধ্যমে জাভাতে এসএসএল হ্যান্ডশেক ডিবাগ সক্ষম করুন -Djavax.net.debug=ssl:handshake:verbose
  2. সার্ভারের মাধ্যমে এসএসএলডাম্প ইনস্টল করুন sudo apt install ssldumpবা এই লিঙ্কটি অনুসরণ করে উত্স থেকে সংকলন করুন যদি আপনি সিপারে পর্যবেক্ষণ Unknown valueকরেন যখন আপনি নীচে নেমে যান run
  3. সার্ভারে, sudo ssldump -k <your-private-key> -i <your-network-interface>
  4. ব্যর্থতার আসল কারণ সম্পর্কে লগটি পরীক্ষা করুন ।

Ssldump লগের হ্যান্ডশেক কাজ না করার উদাহরণ:

New TCP connection #1: 10.1.68.86(45308) <-> 10.1.68.83(5671)
1 1  0.0111 (0.0111)  C>S  Handshake
      ClientHello
        Version 3.3
        cipher suites
        TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
        TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        TLS_RSA_WITH_AES_256_GCM_SHA384
        TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
        TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
        TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
        TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
        TLS_RSA_WITH_AES_128_GCM_SHA256
        TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
        TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
        TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
        TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
        TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
        TLS_RSA_WITH_AES_256_CBC_SHA256
        TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
        TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
        TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
        TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
        TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
        TLS_RSA_WITH_AES_256_CBC_SHA
        TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
        TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
        TLS_DHE_RSA_WITH_AES_256_CBC_SHA
        TLS_DHE_DSS_WITH_AES_256_CBC_SHA
        TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
        TLS_RSA_WITH_AES_128_CBC_SHA256
        TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
        TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
        TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
        TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
        TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
        TLS_RSA_WITH_AES_128_CBC_SHA
        TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
        TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
        TLS_DHE_RSA_WITH_AES_128_CBC_SHA
        TLS_DHE_DSS_WITH_AES_128_CBC_SHA
        TLS_EMPTY_RENEGOTIATION_INFO_SCSV
        compression methods
                  NULL
1 2  0.0122 (0.0011)  S>C  Alert
    level           fatal
    value           insufficient_security
1    0.0126 (0.0004)  S>C  TCP RST

Ssldump লগ সফল হ্যান্ডশেক উদাহরণ

New TCP connection #1: 10.1.68.86(56558) <-> 10.1.68.83(8443)
1 1  0.0009 (0.0009)  C>S  Handshake
      ClientHello
        Version 3.3
        cipher suites
        TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
        Unknown value 0xcca9
        Unknown value 0xcca8
        Unknown value 0xccaa
        TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
        TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
        TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
        TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
        TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
        TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
        TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
        TLS_DHE_RSA_WITH_AES_256_CBC_SHA
        TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
        TLS_DHE_RSA_WITH_AES_128_CBC_SHA
        TLS_RSA_WITH_AES_256_GCM_SHA384
        TLS_RSA_WITH_AES_128_GCM_SHA256
        TLS_RSA_WITH_AES_256_CBC_SHA256
        TLS_RSA_WITH_AES_128_CBC_SHA256
        TLS_RSA_WITH_AES_256_CBC_SHA
        TLS_RSA_WITH_AES_128_CBC_SHA
        TLS_EMPTY_RENEGOTIATION_INFO_SCSV
        compression methods
                  NULL
1 2  0.0115 (0.0106)  S>C  Handshake
      ServerHello
        Version 3.3
        session_id[0]=

        cipherSuite         TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        compressionMethod                   NULL
1 3  0.0115 (0.0000)  S>C  Handshake
      Certificate
1 4  0.0115 (0.0000)  S>C  Handshake
      ServerKeyExchange
Not enough data. Found 294 bytes (expecting 32767)
1 5    0.0115   (0.0000)    S>C    Handshake
        ServerHelloDone
1 6    0.0141   (0.0025)    C>S    Handshake
        ClientKeyExchange
Not enough data. Found 31 bytes (expecting 16384)
1 7    0.0141   (0.0000)    C>S    ChangeCipherSpec
1 8    0.0141   (0.0000)    C>S      Handshake
1 9    0.0149   (0.0008)    S>C    Handshake
1 10   0.0149   (0.0000)    S>C    ChangeCipherSpec
1 11   0.0149   (0.0000)    S>C      Handshake

জাভা লগ কাজ না করার উদাহরণ

javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.778 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.779 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.779 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.780 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_RSA_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.780 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.780 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.781 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.781 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.781 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.782 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_RSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.782 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.782 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.782 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.783 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.783 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.783 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.783 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.783 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.784 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.784 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: T LS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.784 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLS11
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.784 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.784 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.784 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.784 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_RSA_WITH_AES_256_GCM_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_RSA_WITH_AES_128_GCM_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.785 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLS10 javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.786 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLS10
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.787 MYT|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLS10
javax.net.ssl|WARNING|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.818 MYT|SignatureScheme.java:282|Signature algorithm, ed25519, is not supported by the underlying providers
javax.net.ssl|WARNING|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.818 MYT|SignatureScheme.java:282|Signature algorithm, ed448, is not supported by the underlying providers
javax.net.ssl|ALL|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.822 MYT|SignatureScheme.java:358|Ignore disabled signature sheme: rsa_md5
javax.net.ssl|INFO|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.822 MYT|AlpnExtension.java:161|No available application protocols
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.823 MYT|SSLExtensions.java:256|Ignore, context unavailable extension: application_layer_protocol_negotiation
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.823 MYT|SSLExtensions.java:256|Ignore, context unavailable extension: renegotiation_info
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.825 MYT|ClientHello.java:651|Produced ClientHello handshake message (
"ClientHello": {
  "client version"      : "TLSv1.2",
  "random"              : "FB BC CD 7C 17 65 86 49 3E 1C 15 37 24 94 7D E7 60 44 1B B8 F4 18 21 D0 E1 B1 31 0D E1 80 D6 A7",
  "session id"          : "",
  "cipher suites"       : "[TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384(0xC02C), TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256(0xC02B), TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384(0xC030), TLS_RSA_WITH_AES_256_GCM_SHA384(0x009D), TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384(0xC02E), TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384(0xC032), TLS_DHE_RSA_WITH_AES_256_GCM_SHA384(0x009F), TLS_DHE_DSS_WITH_AES_256_GCM_SHA384(0x00A3), TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256(0xC02F), TLS_RSA_WITH_AES_128_GCM_SHA256(0x009C), TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256(0xC02D), TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256(0xC031), TLS_DHE_RSA_WITH_AES_128_GCM_SHA256(0x009E), TLS_DHE_DSS_WITH_AES_128_GCM_SHA256(0x00A2), TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384(0xC024), TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384(0xC028), TLS_RSA_WITH_AES_256_CBC_SHA256(0x003D), TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384(0xC026), TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384(0xC02A), TLS_DHE_RSA_WITH_AES_256_CBC_SHA256(0x006B), TLS_DHE_DSS_WITH_AES_256_CBC_SHA256(0x006A), TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA(0xC00A), TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA(0xC014), TLS_RSA_WITH_AES_256_CBC_SHA(0x0035), TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA(0xC005), TLS_ECDH_RSA_WITH_AES_256_CBC_SHA(0xC00F), TLS_DHE_RSA_WITH_AES_256_CBC_SHA(0x0039), TLS_DHE_DSS_WITH_AES_256_CBC_SHA(0x0038), TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256(0xC023), TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256(0xC027), TLS_RSA_WITH_AES_128_CBC_SHA256(0x003C), TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256(0xC025), TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256(0xC029), TLS_DHE_RSA_WITH_AES_128_CBC_SHA256(0x0067), TLS_DHE_DSS_WITH_AES_128_CBC_SHA256(0x0040), TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA(0xC009), TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(0xC013), TLS_RSA_WITH_AES_128_CBC_SHA(0x002F), TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA(0xC004), TLS_ECDH_RSA_WITH_AES_128_CBC_SHA(0xC00E), TLS_DHE_RSA_WITH_AES_128_CBC_SHA(0x0033), TLS_DHE_DSS_WITH_AES_128_CBC_SHA(0x0032), TLS_EMPTY_RENEGOTIATION_INFO_SCSV(0x00FF)]",
  "compression methods" : "00",  "extensions"          : [
    "server_name (0)": {
      type=host_name (0), value=mq.tpc-ohcis.moh.gov.my
    },
    "status_request (5)": {
      "certificate status type": ocsp
      "OCSP status request": {
        "responder_id": <empty>
        "request extensions": {
          <empty>
        }
      }
    },
    "supported_groups (10)": {
      "versions": [secp256r1, secp384r1, secp521r1, sect283k1, sect283r1, sect409k1, sect409r1, sect571k1, sect571r1, secp256k1, ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192]
    },
    "ec_point_formats (11)": {
      "formats": [uncompressed]
    },
    "signature_algorithms (13)": {
      "signature schemes": [ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, ecdsa_secp512r1_sha512, rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512, rsa_pss_pss_sha256, rsa_pss_pss_sha384, rsa_pss_pss_sha512, rsa_pkcs1_sha256, rsa_pkcs1_sha384, rsa_pkcs1_sha512, dsa_sha256, ecdsa_sha224, rsa_sha224, dsa_sha224, ecdsa_sha1, rsa_pkcs1_sha1, dsa_sha1]
    },
    "signature_algorithms_cert (50)": {
      "signature schemes": [ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, ecdsa_secp512r1_sha512, rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512, rsa_pss_pss_sha256, rsa_pss_pss_sha384, rsa_pss_pss_sha512, rsa_pkcs1_sha256, rsa_pkcs1_sha384, rsa_pkcs1_sha512, dsa_sha256, ecdsa_sha224, rsa_sha224, dsa_sha224, ecdsa_sha1, rsa_pkcs1_sha1, dsa_sha1]
    },
    "status_request_v2 (17)": {
      "cert status request": {
        "certificate status type": ocsp_multi
        "OCSP status request": {
          "responder_id": <empty>
          "request extensions": {
            <empty>
          }
        }      }
    },
    "extended_master_secret (23)": {
      <empty>
    },
    "supported_versions (43)": {
      "versions": [TLSv1.2, TLSv1.1, TLSv1]
    }
  ]
}
)
javax.net.ssl|DEBUG|43|SimpleAsyncTaskExecutor-1|2019-07-03 17:35:01.829 MYT|Alert.java:238|Received alert message (
"Alert": {
  "level"      : "fatal",
  "description": "insufficient_security"
}
)

0

আমার ক্ষেত্রে আমার ১.১ সংস্করণটি ছিল। আমি সহজে কার্ল দিয়ে ইস্যুটি পুনরায় উত্পাদন করছি। সার্ভারটি টিএলএস 1.2-এর চেয়ে কম সংস্করণ সমর্থন করে না।

এটি হ্যান্ডশেক ইস্যু পেয়েছে:

curl --insecure --tlsv1.1 -i https://youhost --noproxy "*"

সংস্করণ 1.2 এর সাথে এটি ভাল কাজ করছিল:

curl --insecure --tlsv1.2 -i https://youhost --noproxy "*"

সার্ভারটি একটি ওয়েবলগিক চালাচ্ছিল, এবং সেটএএনভিডোমাইন.শতে এই যুক্তি যুক্ত করে এটিকে TLSv1.1 এর সাথে কাজ করার জন্য তৈরি করেছে:

-Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.1

0

জাভা সংস্করণের কারণে এই সমস্যাটি ঘটছে। আমি 1.8.0.231 JDK ব্যবহার করছিলাম এবং এই ত্রুটিটি পেয়েছি। আমি আমার জাভা সংস্করণটি 1.8.0.231 থেকে 1.8.0.171 এ অবনতি করেছি, এখন এটি ঠিকঠাক কাজ করছে।

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