Come ha già commentato @skelwa, dovrai aggiungere il enabledTLSProtocols=TLSv1.2
proprietà di configurazione nella stringa di connessione per risolvere il problema.
Una stringa di connessione completa per Connector/J potrebbe assomigliare a questo:
jdbc:mysql://<host>:<port>/<dbname>?enabledTLSProtocols=TLSv1.2
Per r2dbc
dovrai usare tlsVersion=TLSv1.2
invece.
La domanda che rimane è:
Perché JDK e MySQL non sono d'accordo sull'utilizzo di TLSv1.2
?
Sebbene entrambe le parti supportino effettivamente TLSv1.2, il problema riscontrato è stato introdotto dal comportamento predefinito di Connector/J. Per motivi di compatibilità, Connector/J non abilita TLSv1.2 e versioni successive per impostazione predefinita. Pertanto, è necessario abilitarlo in modo esplicito.
Vedere la seguente nota :
AVVISO: tieni presente che soluzioni suggerendo di modificare jdk.tls.disabledAlgorithms
all'interno di jre/lib/security
rappresentano un rischio per la sicurezza alla tua applicazione e la modifica di qualsiasi cosa potrebbe avere gravi implicazioni! Ci sono ragioni per cui quei protocolli sono stati disabilitati e non si dovrebbe semplicemente rimuovere tutto o anche solo parti da quell'elenco.
Nota: se vuoi ottenere informazioni più approfondite di basso livello dal JDK per eseguire il debug del tuo problema, puoi abilitare i log di debug SSL passando la seguente configurazione al comando java:
-Djavax.net.debug=ssl,handshake
o anche -Djavax.net.debug=all
Nel tuo caso vedrai qualcosa del tipo:
...(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)
...