Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

नवीनतम JDK अपडेट के बाद Java MySQL 5.7 से कनेक्ट क्यों नहीं हो सकता है और इसे कैसे ठीक किया जाना चाहिए? (ssl.SSLHandshakeException:कोई उपयुक्त प्रोटोकॉल नहीं)

जैसा कि @skelwa ने पहले ही टिप्पणी कर दी है, आपको enabledTLSProtocols=TLSv1.2 जोड़ना होगा आपकी समस्या का समाधान करने के लिए कनेक्शन स्ट्रिंग में कॉन्फ़िगरेशन गुण।

Connector/J के लिए एक पूर्ण कनेक्शन स्ट्रिंग इस तरह दिख सकता है:

jdbc:mysql://<host>:<port>/<dbname>?enabledTLSProtocols=TLSv1.2

r2dbc के लिए आपको tlsVersion=TLSv1.2 . का उपयोग करना होगा इसके बजाय।

जो प्रश्न शेष है वह है:

JDK और MySQL केवल TLSv1.2 का उपयोग करने के लिए सहमत क्यों नहीं हैं? ?

यद्यपि दोनों पक्ष वास्तव में TLSv1.2 का समर्थन करते हैं, आप जिस समस्या का सामना कर रहे थे, वह कनेक्टर/जे के डिफ़ॉल्ट व्यवहार द्वारा प्रस्तुत की गई है। संगतता कारणों से Connector/J डिफ़ॉल्ट रूप से TLSv1.2 और उच्चतर को सक्षम नहीं करता है। इसलिए, किसी को इसे स्पष्ट रूप से सक्षम करना होगा।

निम्नलिखित देखें नोट :

चेतावनी: कृपया ध्यान रखें कि <स्ट्राइक>समाधान संपादन का सुझाव देना jdk.tls.disabledAlgorithms jre/lib/security . के अंदर एक सुरक्षा जोखिम . उत्पन्न करें आपके आवेदन में और कुछ भी बदलने के गंभीर निहितार्थ हो सकते हैं! ऐसे कारण हैं कि उन प्रोटोकॉल को अक्षम कर दिया गया था और किसी को बस सब कुछ या उस सूची से केवल कुछ हिस्सों को नहीं निकालना चाहिए।

नोट: यदि आप अपनी समस्या को डीबग करने के लिए JDK से अधिक निम्न स्तर की अंतर्दृष्टि प्राप्त करना चाहते हैं, तो आप निम्न कॉन्फ़िगरेशन को java comand में पास करके ssl डीबग लॉग को सक्षम कर सकते हैं:

-Djavax.net.debug=ssl,handshake या यहां तक ​​कि-Djavax.net.debug=all

आपके मामले में आप कुछ इस तरह देखेंगे:

...(HANDSHAKE_FAILURE): Couldn't kickstart handshaking (
"throwable" : {
  javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
    at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170)
    at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
    ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्ट php mysql . के लिए कीवर्ड विभाजित करें

  2. utf8_bin फ़ील्ड के लिए MYSQL केस संवेदनशील खोज

  3. एक जटिल एसक्यूएल कमांड को कैसे कार्यान्वित करें

  4. MySQL REPLACE:एक ही सिर और पूंछ द्वारा सीमांकित प्रत्येक विशिष्ट सबस्ट्रिंग में एक चार की सभी घटनाओं को कैसे बदलें

  5. PHP के साथ MySQL से utf8mb4 डेटा में हेरफेर करना