gpt4 book ai didi

java - 将带有 Hibernate 的 Vaadin App 连接到 Azure 上的 MariaDB 时如何使用 SSL 加密

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:00 25 4
gpt4 key购买 nike

我目前正在使用 Vaadin 和 Hibernate 开发 Java 8 应用程序,我正尝试将其迁移到 Azure 以进行测试。到目前为止一切顺利,除了一件事:
当我在 Azure 上的 MariaDB 中激活需要 SSL 选项时,我无法再连接:

原因:java.sql.SQLException:需要 SSL 连接。请指定 SSL 选项并重试。

不幸的是,我并没有自己编写这个应用程序,而且我不太熟悉 Vaadin 和 Hibernate,甚至一般的 Java 以及如何与它们建立 ssl 或 db 连接。
所以我需要一些帮助:

这是 Servlet.java 文件中的 JDBC 连接字符串,根据我的理解,db init 发生的位置:

Connection con = DriverManager.getConnection("jdbc:mysql://<username>.mariadb.database.azure.com:3306/<db>?autoReconnect=true", "<username>", "<password>");


我通过将其添加到 URL 来更改它:&useSSL=true&requireSSL=true&verifyServerCertificate=true

现在应用程序不再在数据库初始化时停止,但在页面完全呈现之前仍然崩溃,并显示相同的错误消息。

我找到了一个包含以下内容的 hibernate.cfg.xml(我删除了映射以使其更短):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<!-- Hibernate -->
<property name="hibernate.use_sql_comments">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

<!-- Hikari -->
<property name="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</property>
<property name="hibernate.hikari.dataSourceClassName">com.mysql.jdbc.jdbc2.optional.MysqlDataSource</property>
<property name="hibernate.hikari.dataSource.url">jdbc:mysql://dbname.mariadb.database.azure.com:3306/db</property>
<property name="hibernate.hikari.dataSource.user">username</property>
<property name="hibernate.hikari.dataSource.password">password</property>
<property name="hibernate.hikari.dataSource.cachePrepStmts">true</property>
<property name="hibernate.hikari.dataSource.prepStmtCacheSize">250</property>
<property name="hibernate.hikari.dataSource.prepStmtCacheSqlLimit">2048</property>
<property name="hibernate.hikari.dataSource.useServerPrepStmts">true</property>
</session-factory>

</hibernate-configuration>


我必须在那里更改什么才能使用 SSL 进行连接?

最佳答案

你可以试试:

<property name="hibernate.hikari.dataSource.url">jdbc:mysql://dbname.mariadb.database.azure.com:3306/db?useSSL=true</property>

据我了解,hibernate.cfg.xml 中的属性最终将用于生成整个连接字符串。因此,如果 useSSL 没有直接属性,您可以手动将其添加到 url。

关于java - 将带有 Hibernate 的 Vaadin App 连接到 Azure 上的 MariaDB 时如何使用 SSL 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58484798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com