首页 > 数据库 > > 数据库开发指南(4)
在创建数据库连接之后,才能使用它来执行SQL语句操作数据。
远程接入数据库之前,需要在配置文件zengine.ini中设置LSNR_IP和LSNR_PORT侦听的IP地址和端口号。一次最多可以设置8个侦听的IP地址,IP地址中间通过逗号隔开。
使用JDBC创建数据库连接,请使用以下函数。
DriverManager.getConnection(String url, String user, String password);参数 | 描述 |
|---|---|
url | 数据库连接描述符格式如下: jdbc:zenith:@ip:port[?key=value[&key=value]..] 说明:
|
user | 数据库用户。 |
password | 数据库用户的密码。 |
KEY值 | 描述 |
|---|---|
loginTimeout | 建立数据库连接超时时间(单位:秒)。 |
socketTimeout | 连接执行命令与服务端通信套接字超时时间(单位:秒)。 |
useSSL | 是否使用SSL建立连接。默认值为true,使用SSL建立连接。此参数为客户端是否使用SSL的总开关,只有设置useSSL为true时,其他SSL设置才会生效。 说明: 如果客户端建立连接时指定useSSL=true,但服务端不支持SSL,客户端会选择与该服务器建立普通连接。 |
requireSSL | 是否强制使用SSL建立连接。
|
verifyServerCertificate | 是否校验服务端证书。默认值为false,不校验。 |
isRevocationEnabled | 是否开启校验crl。默认值为false,不校验。 |
sslCipher | 设置SSL秘钥算法套件,支持的算法套件如下:
|
在应用程序JVM启动时,使用java命令行参数(推荐),如:-Djavax.net.ssl.trustStore=path_to_truststore_file
直接在代码中设置系统参数,如:System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
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证书的操作步骤如下。配置后,如果在连接字符串中指定useSSL=true,则JDBC会使用SSL双向认证来建立连接。
生成并配置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");转换自认证证书cacert.pem,以生成java可用的truststore证书。
自认证证书cacert.pem的生成方式请参见《GaussDB 100 V300R001C00 安全加固指南》中的“数据库配置 > 设置数据库连接 > 用SSL进行安全的TCP/IP连接 > 创建自认证书”。
使用java keytool(一般在JDK或JRE的bin目录下)工具将cacert.pem转换成truststore。
shell> keytool -importcert -alias GaussCACert -file cacert.pem -keystore truststore -storepass mypassword配置刚创建的truststore。
支持以下两种配置方式。
生成并配置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");转换客户端证书文件(client.crt)和客户端私钥(client.key),以生成java可用的keystore文件。
客户端证书文件(client.crt)和客户端私钥(client.key)的生成方式请参见《GaussDB 100 V300R001C00 安全加固指南》中的“数据库配置 > 设置数据库连接 > 用SSL进行安全的TCP/IP连接 > 创建自认证书”。
使用openssl工具将客户端证书和私钥文件转化为PKCS #12格式的文件。
shell> openssl pkcs12 -export -in client.crt -inkey client.key -name "gaussclient" -passout pass:mypassword -out client-keystore.p12使用keytool工具将上一步生成的文件转化为java keystore。
shell> keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass mypassword -destkeystore keystore -deststoretype JKS -deststorepass mypassword配置刚创建的keystore。
支持以下两种配置方式
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3146365/ ,如需转载,请注明出处,否则将追究法律责任。