Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Wildfly配置为对MariaDB使用SSL连接_Java_Mysql_Mariadb_Wildfly_Wildfly 13 - Fatal编程技术网

Java 将Wildfly配置为对MariaDB使用SSL连接

Java 将Wildfly配置为对MariaDB使用SSL连接,java,mysql,mariadb,wildfly,wildfly-13,Java,Mysql,Mariadb,Wildfly,Wildfly 13,我想将Wildfly 14配置为使用加密的JDBC连接。我试过这个: 马里亚布: mysql -u root -p CREATE USER 'wildfly' IDENTIFIED BY 'qwerty'; CREATE DATABASE production_gateway; GRANT ALL PRIVILEGES ON production_gateway.* TO 'wildfly'@'%' REQUIRE SSL; FLUSH PRIVILEGES; 创建证书: mkdir -p /

我想将Wildfly 14配置为使用加密的JDBC连接。我试过这个:

马里亚布:

mysql -u root -p
CREATE USER 'wildfly' IDENTIFIED BY 'qwerty';
CREATE DATABASE production_gateway;
GRANT ALL PRIVILEGES ON production_gateway.* TO 'wildfly'@'%' REQUIRE SSL;
FLUSH PRIVILEGES;
创建证书:

mkdir -p /etc/mysql/ssl
cd /etc/mysql/ssl

sudo openssl genrsa 4096 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 36500 -key ca-key.pem -out cacert.pem
sudo openssl req -newkey rsa:4096 -days 36500 -nodes -keyout server-key.pem -out server-req.pem
sudo openssl rsa -in server-key.pem -out server-key.pem
sudo openssl x509 -req -in server-req.pem -days 36500 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

sudo openssl req -newkey rsa:2048 -days 36500 -nodes -keyout client-key.pem -out client-req.pem
sudo openssl rsa -in client-key.pem -out client-key.pem
sudo openssl x509 -req -in client-req.pem -days 36500 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
openssl verify -CAfile cacert.pem server-cert.pem client-cert.pem
在my.cnf下的MariDB中添加证书

ssl-ca=/etc/mysql/ssl/cacert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem
systemctl重启mysql

在Java keystone中导入证书:

cd /usr/lib/jvm/java-11-openjdk-amd64/lib/security/

openssl x509 -outform der -in /etc/mysql/ssl/client-cert.pem -out certificate.der

keytool -import -alias client -keystore /usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -file certificate.der -srcstorepass changeit
导出密钥石配置:

export JAVA_OPTS="-Djavax.net.ssl.keyStore=/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -Djavax.net.ssl.keyStorePassword=changeit"
当我使用此连接链接时:

jdbc:mariadb://localhost:3306/production_gateway
-它正在工作

但是当我使用:
jdbc时:mariadb://localhost:3306/production_gateway?useSSL=true&requireSSL=true

我得到:

17:40:30,454 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (External Management Request Threads -- 1) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: IJ031084: Unable to create connection
17:40:30,472 ERROR [org.jboss.as.controller.management-operation] (External Management Request Threads -- 1) WFLYCTL0013: Operation ("test-connection-in-pool") failed - address: ([
    ("subsystem" => "datasources"),
    ("data-source" => "MariaDB")
]) - failure description: "WFLYJCA0040: failed to invoke operation: WFLYJCA0047: Connection is not valid"
你能建议我如何解决这个问题吗?
我使用JDBC驱动程序
mariadb-java-client-2.3.0.jar

据我所知,您只需提供
requireSSL
字段,即可
true

尝试使用以下行:

jdbc:mariadb://localhost:3306/production_gateway?requireSSL=true
让我们知道它是否有效


有关更多说明,请查看。

从未尝试过。但是&requireSSL不一定是&requireSSL=true吗?对不起,输入错误。此链接可能对您有所帮助