sql >> Database >  >> RDS >> Mysql

Waarom kan Java geen verbinding maken met MySQL 5.7 na de laatste JDK-update en hoe moet dit worden opgelost? (ssl.SSLHandshakeException:geen geschikt protocol)

Zoals @skelwa al opmerkte, moet je de enabledTLSProtocols=TLSv1.2 toevoegen configuratie-eigenschap in de verbindingsreeks om uw probleem op te lossen.

Een volledige verbindingsreeks voor Connector/J zou er zo uit kunnen zien:

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

Voor r2dbc u moet tlsVersion=TLSv1.2 . gebruiken in plaats daarvan.

De vraag die overblijft is:

Waarom komen de JDK en MySQL niet gewoon overeen om TLSv1.2 te gebruiken ?

Hoewel beide partijen TLSv1.2 daadwerkelijk ondersteunen, wordt het probleem dat u ondervond veroorzaakt door het standaardgedrag van Connector/J. Om compatibiliteitsredenen schakelt Connector/J TLSv1.2 en hoger standaard niet in. Daarom moet je het expliciet inschakelen.

Zie de volgende opmerking :

WAARSCHUWING: houd er rekening mee dat oplossingen suggereert het bewerken van jdk.tls.disabledAlgorithms binnenkant van jre/lib/security vormen een beveiligingsrisico aan uw toepassing en het veranderen van iets daar kan ernstige gevolgen hebben! Er zijn redenen waarom die protocollen zijn uitgeschakeld en men moet niet gewoon alles of zelfs maar delen van die lijst verwijderen.

Opmerking: als u meer inzichten op laag niveau van de JDK wilt krijgen om uw probleem op te lossen, kunt u ssl-foutopsporingslogboeken inschakelen door de volgende configuratie door te geven aan het java-commando:

-Djavax.net.debug=ssl,handshake of zelfs-Djavax.net.debug=all

In jouw geval zie je zoiets als:

...(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. Overschakelen van MySQL naar Cassandra - voor- en nadelen?

  2. CSV-gegevens invoegen in PostgreSQL-database (externe database)

  3. Breek grote verwijderingsbewerkingen in stukken

  4. MySQL:geef de primaire sleutel een naam in de CREATE TABLE-instructie