文档首页/ 云数据库 GeminiDB/ GeminiDB HBase接口/ 用户指南/ 实例连接及管理/ 如何通过TLS(SSL)方式连接GeminiDB HBase接口实例
更新时间:2025-08-29 GMT+08:00
分享

如何通过TLS(SSL)方式连接GeminiDB HBase接口实例

前置步骤

  1. 登录管理控制台
  2. 在服务列表中选择“数据库 > 云数据库 GeminiDB”。
  3. “实例管理”页面,单击目标实例名称,进入“基本信息”页面。
  4. 在“数据库信息”处,将SSL开关打开,并单击SSL开关旁边的下载按钮,下载ca.cert文件。

  5. 将ca.cert文件上传到ECS上。
  6. 在您的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);
        }
 
    }
}

相关文档