without verificación usessl una true times sqlnontransientconnectionexception servidor recomienda provide not identidad giving for false establecer create could conexión attempted and java ssl database-connection mysql-error-1064

java - verificación - usessl true and provide truststore for server certificate verification



Advertencia sobre la conexión SSL cuando se conecta a la base de datos MySQL (12)

¿Qué tal usar SSL pero desactivar la verificación del servidor (como cuando está en modo de desarrollo en su propia computadora):

jdbc:mysql://localhost:3306/Peoples?verifyServerCertificate=false&useSSL=true

Con las dos clases siguientes, he intentado conectarme a una base de datos MySQL. Sin embargo, siempre recibo este error:

Mié 09 de diciembre 22:46:52 CET 2015 ADVERTENCIA: No se recomienda establecer una conexión SSL sin la verificación de identidad del servidor. De acuerdo con los requisitos de MySQL 5.5.45+, 5.6.26+ y 5.7.6+, la conexión SSL debe establecerse de forma predeterminada si no se establece la opción explícita. Para cumplir con las aplicaciones existentes que no usan SSL, la propiedad generateServerCertificate se establece en ''falso''. Debe deshabilitar explícitamente SSL configurando useSSL = false, o bien useSSL = true y proporcionar un almacén de confianza para la verificación del certificado del servidor.

Esta es la clase de prueba con el método main :

public class TestDatabase { public static void main(String[] args) { Database db = new Database(); try { db.connect(); } catch (Exception e) { e.printStackTrace(); } db.close(); } }

Esta es la clase de Database :

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Database { private Connection con; public void connect() throws Exception{ if(con != null) return; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new Exception("No database"); } String connectionURL = "jdbc:mysql://localhost:3306/Peoples"; con = DriverManager.getConnection(connectionURL, "root", "milos23"); } public void close(){ if(con != null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } }


Como actualmente estoy en modo de desarrollo, configuré useSSL en No, no en tomcat sino en configuraciones de servidor mysql. Fui a Administrar configuración de acceso / Administrar conexiones de servidor desde el banco de trabajo -> Seleccioné mi conexión. La pestaña de conexión interna fue a la pestaña SSL y deshabilitó la configuración. Trabajó para mi.


Esto estuvo bien para mí:

this.conn = (Connection)DriverManager .getConnection(url + dbName + "?useSSL=false", userName, password);


Solución Para solucionarlo, agregue useSSL = false al final de la cadena de conexión MySQL:

ex.

application.properties

fuente de datos mysql

spring.datasource.url=jdbc:mysql://localhost/dbname?useSSL=false spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver


Su URL de conexión debe verse como la siguiente,

jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false

Esto deshabilitará SSL y también suprimirá los errores de SSL.


También encontré esta advertencia y luego la arreglé usando SSL = sufijo falso en la cadena de conexión como este código de ejemplo.

Ejemplo:

<property name="url" value="jdbc:mysql://localhost:3306/world?useSSL=true"/>


Un método alternativo sería:

Properties properties = new Properties(); properties.setProperty("user", "root"); properties.setProperty("password", "milos23); properties.setProperty("useSSL", "false"); properties.setProperty("autoReconnect", "true"); try (Connection conn = DriverManager.getConnection(connectionUrl, properties)) { ... } catch (SQLException e) { ... }

Sin embargo, no creo que la configuración de reconexión automática sea necesaria para eliminar la advertencia.


Use esto para resolver el problema en la colmena mientras se conecta con MySQL

<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true&amp;autoReconnect=true&amp;useSSL=false</value> <description>metadata is stored in a MySQL server</description> </property>


Yo uso esta propiedad para hibernar en config xml

<property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/bookshop?serverTimezone=UTC&amp;useSSL=false </property>

sin - serverTimezone = UTC - no funciona


las nuevas versiones de mysql-connector establecen la conexión SSL por defecto ... para resolverlo:

Descargue la versión anterior de mysql-connector como mysql-connector-java-5.0.8.zip

. . o . Descarga OpenSSL para Windows y sigue las instrucciones sobre cómo configurarlo


menciona la url como:

jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&useSSL=false

pero en la configuración xml cuando menciona y firma, el IDE muestra el siguiente error:

The reference to entity "useSSL" must end with the '';'' delimiter.

y luego tienes que usar explícitamente &amp; en lugar de & para determinarse como & por xml partir de entonces en xml , debe proporcionar la url en la configuración xml de esta manera:

<property name="connection.url">jdbc:mysql://hostname:3306/hibernatedb?autoReconnect=true&amp;useSSL=false</property>


necesita usar su ruta mysql de esta manera:

connectionString = "jdbc:mysql://{server-name}:3306/%s?useUnicode=yes&characterEncoding=UTF-8&useSSL=false"