ITPub博客

首页 > 数据库 > > 数据库开发指南(4)

数据库开发指南(4)

作者:GaussDB_数据库 时间:2020-04-26 09:48:53 0 删除 编辑

连接数据库

在创建数据库连接之后,才能使用它来执行SQL语句操作数据。

远程接入数据库之前,需要在配置文件zengine.ini中设置LSNR_IP和LSNR_PORT侦听的IP地址和端口号。一次最多可以设置8个侦听的IP地址,IP地址中间通过逗号隔开。

函数原型

使用JDBC创建数据库连接,请使用以下函数。

DriverManager.getConnection(String url, String user, String password);

参数说明

表1 数据库连接参数

参数

描述

url

数据库连接描述符格式如下:

jdbc:zenith:@ip:port[?key=value[&key=value]..]

说明:
  • ip为数据库服务器名称。

  • port为数据库服务器端口。

  • URL连接属性通过&符号进行分割,每个属性是一个key=value对

  • URL中的KEY值说明见表2。

user

数据库用户。

password

数据库用户的密码。

表2 url中支持的key值说明

KEY值

描述

loginTimeout 

建立数据库连接超时时间(单位:秒)。

socketTimeout 

连接执行命令与服务端通信套接字超时时间(单位:秒)。

useSSL 

是否使用SSL建立连接。默认值为true,使用SSL建立连接。此参数为客户端是否使用SSL的总开关,只有设置useSSL为true时,其他SSL设置才会生效。

说明:

如果客户端建立连接时指定useSSL=true,但服务端不支持SSL,客户端会选择与该服务器建立普通连接。

requireSSL 

是否强制使用SSL建立连接。

  • 默认值false,不强制使用SSL。

  • true:强制使用SSL。如果服务端不支持SSL,则建立连接时会报错。

verifyServerCertificate 

是否校验服务端证书。默认值为false,不校验。

isRevocationEnabled 

是否开启校验crl。默认值为false,不校验。

sslCipher 

设置SSL秘钥算法套件,支持的算法套件如下:

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

JDBC配置证书的方式当前支持两种:
  • 在应用程序JVM启动时,使用java命令行参数(推荐),如:-Djavax.net.ssl.trustStore=path_to_truststore_file

  • 直接在代码中设置系统参数,如:System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");

表3 ssl双向认证使用到的环境变量说明:

JVM环境变量

变量说明

javax.net.ssl.keyStore 

SSL keyStore文件位置,keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。

javax.net.ssl.keyStoreType 

keyStore的类型,默认值: JKS

javax.net.ssl.keyStorePassword 

SSL keyStore的密码

javax.net.ssl.trustStore 

SSL trustStore文件位置,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书

javax.net.ssl.trustStoreType

trustStore的类型,默认值:JKS

javax.net.ssl.trustStorePassword

SSL trustStore的密码

示例-连接数据库

//以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。

public static Connection GetConnection(String username, String passwd)
{
//驱动类。
String driver = "com.huawei.gauss.jdbc.ZenithDriver";
//数据库连接描述符。
String sourceURL = "jdbc:zenith:@10.255.255.1:1888";
Connection conn = null;
try {
//加载数据库驱动。
Class.forName(driver).newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}

try {
//创建数据库连接。
//getConnection(String url, String user, String password)
conn = DriverManager.getConnection(sourceURL,username,passwd);
System.out.println("Connection succeed!");
} catch (Exception e) {
e.printStackTrace();
return null;
}

return conn;
};

配置JDBC客户端SSL证书

配置JDBC客户端SSL证书的操作步骤如下。配置后,如果在连接字符串中指定useSSL=true,则JDBC会使用SSL双向认证来建立连接。

  1. 生成并配置truststore。

  • 使用java命令行参数的方式。

  • -Djavax.net.ssl.trustStore=path_to_truststore_file -Djavax.net.ssl.trustStorePassword=mypassword
  • 设置系统参数的方式。

  • System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); 
    System.setProperty("javax.net.ssl.trustStorePassword","mypassword");
  1. 转换自认证证书cacert.pem,以生成java可用的truststore证书。

  2. 自认证证书cacert.pem的生成方式请参见《GaussDB 100 V300R001C00 安全加固指南》中的“数据库配置 > 设置数据库连接 > 用SSL进行安全的TCP/IP连接 > 创建自认证书”。

  3. 使用java keytool(一般在JDK或JRE的bin目录下)工具将cacert.pem转换成truststore。

  4. shell> keytool -importcert -alias GaussCACert -file cacert.pem -keystore truststore -storepass mypassword
  5. 配置刚创建的truststore。

    支持以下两种配置方式。

  1. 生成并配置keystore。

  • 使用java命令行参数的方式

  • -Djavax.net.ssl.keyStore=path_to_keystore_file-Djavax.net.ssl.keyStorePassword=mypassword
  • 设置系统参数的方式

  • System.setProperty("javax.net.ssl.keyStore","path_to_keystore_file"); 
    System.setProperty("javax.net.ssl.keyStorePassword","mypassword");
  1. 转换客户端证书文件(client.crt)和客户端私钥(client.key),以生成java可用的keystore文件。

  2. 客户端证书文件(client.crt)和客户端私钥(client.key)的生成方式请参见《GaussDB 100 V300R001C00 安全加固指南》中的“数据库配置 > 设置数据库连接 > 用SSL进行安全的TCP/IP连接 > 创建自认证书”。

  3. 使用openssl工具将客户端证书和私钥文件转化为PKCS #12格式的文件。

  4. shell> openssl pkcs12 -export -in client.crt -inkey client.key -name "gaussclient" -passout pass:mypassword -out client-keystore.p12
  5. 使用keytool工具将上一步生成的文件转化为java keystore。

  6. shell> keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass mypassword -destkeystore keystore -deststoretype JKS -deststorepass mypassword
  7. 配置刚创建的keystore。

    支持以下两种配置方式


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3146365/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19228