更新时间:2025-08-29 GMT+08:00
如何通过TLS(SSL)方式连接GeminiDB HBase接口实例
前置步骤
- 登录管理控制台。
- 在服务列表中选择“数据库 > 云数据库 GeminiDB”。
- 在“实例管理”页面,单击目标实例名称,进入“基本信息”页面。
- 在“数据库信息”处,将SSL开关打开
,并单击SSL开关旁边的下载按钮,下载ca.cert文件。

- 将ca.cert文件上传到ECS上。
- 在您的ECS上执行以下命令,将服务端证书文件放入一个truststore中,证书密码默认为"PASSWORD",您可以修改下面命令中的PASSWORD为您所需要的密码,以便客户端读取。 该处生成的truststore文件将会在后续连接方式样例中被使用。
keytool -importcert -alias hw -file ca.cert -keystore truststore.jks -storepass PASSWORD
通过HBase Shell建立TLS连接
客户端hbase-site.xml中增加以下配置项:
- hbase.rpc.tls.truststore.location项的值为6生成的truststore.jks文件路径,推荐使用绝对路径。
- hbase.rpc.tls.truststore.password项的值为6设置的密码。注意,密码默认为 “PASSWORD”。
<property> <name>hbase.client.netty.tls.enabled</name> <value>true</value> </property> <property> <name>hbase.rpc.tls.truststore.location</name> <value>conf/truststore.jks</value> </property> <property> <name>hbase.rpc.tls.truststore.password</name> <value>PASSWORD</value> </property>
设置完成后正常启动HBase Shell检验连接是否成功。
通过Java应用建立TLS连接
参考以下Java代码,请修改其中的连接地址,证书文件目录等路径,使其指向正确的连接地址与证书文件:
package com.huawei;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import static org.apache.hadoop.hbase.io.crypto.tls.X509Util.HBASE_CLIENT_NETTY_TLS_ENABLED;
import static org.apache.hadoop.hbase.io.crypto.tls.X509Util.HBASE_CLIENT_NETTY_TLS_VERIFY_SERVER_HOSTNAME;
import static org.apache.hadoop.hbase.io.crypto.tls.X509Util.TLS_CONFIG_TRUSTSTORE_LOCATION;
import static org.apache.hadoop.hbase.io.crypto.tls.X509Util.TLS_CONFIG_TRUSTSTORE_PASSWORD;
public class ExampleTlsConnection
{
public static void main(String[] args) throws Throwable
{
Configuration conf = HBaseConfiguration.create();
// todo: change connect address
conf.set("hbase.zookeeper.quorum", "127.0.0.1");
conf.set("hbase.zookeeper.property.clientPort", "2181");
// todo: change those two strings.
String path = "/absolute/path/to/your/truststore.jks";
String password = "your_truststore_pass_word";
conf.setBoolean(HBASE_CLIENT_NETTY_TLS_ENABLED, true);
conf.setBoolean(HBASE_CLIENT_NETTY_TLS_VERIFY_SERVER_HOSTNAME, false);
conf.set(TLS_CONFIG_TRUSTSTORE_LOCATION, path);
conf.set(TLS_CONFIG_TRUSTSTORE_PASSWORD, password);
// 填写用户名和密码
UserGroupInformation ugi = UserGroupInformation.createProxyUser("your_user_name", UserGroupInformation.createRemoteUser("your_password"));
try (Connection connection = ConnectionFactory.createConnection(conf, User.create(ugi)))
{
Admin admin = connection.getAdmin();
TableName tb = TableName.valueOf("test");
List<ColumnFamilyDescriptor> cfs = new ArrayList<>();
cfs.add(ColumnFamilyDescriptorBuilder.newBuilder("cf1".getBytes()).build());
cfs.add(ColumnFamilyDescriptorBuilder.newBuilder("cf2".getBytes()).build());
cfs.add(ColumnFamilyDescriptorBuilder.newBuilder("cf3".getBytes()).build());
cfs.add(ColumnFamilyDescriptorBuilder.newBuilder("cf4".getBytes()).build());
cfs.add(ColumnFamilyDescriptorBuilder.newBuilder("cf5".getBytes()).build());
TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(tb).setColumnFamilies(cfs).build();
admin.createTable(tableDescriptor);
}
}
}