中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

开启Client端TLS认证

  • 分离部署时才需要此步骤,且如需开启TLS认证,则BoostIO集群中的计算节点均需开启TLS认证,需登录到部署有BoostIO的计算节点上分别进行操作。
  • 集群中所有的Client端和Server端必须同步开启或关闭TLS认证,否则会连接失败。
  • 多用户访问BoostIO服务时,每个用户使用的证书可以是不同的,但必须满足都由同一个CA签发。

前提条件

BoostIO已经安装成功,本章节以安装目录/opt为例进行描述。首先准备好TLS认证需要的文件,如表1所示。

表1 开启Client端TLS认证所需文件列表

文件

说明

CA文件

一个自签名的证书,可以签发其它证书。格式为:PEM(*.pem)。

吊销证书列表文件

给出吊销证书列表文件,格式为:PEM(*.crl)。可选,如无吊销证书,可以没有此文件。

Client端的证书

由CA签发的证书,保证在有效期内。格式为:PEM chain(*.pem)。

Client端的证书对应的私钥文件

要与Client端证书对应,安装用户要知道这个私钥文件的口令。格式为:PEM encrypted(*.pem)。

seceasy_encrypt文件

安全加密工具。位于“/opt/boostio/bin”目录下。

操作步骤

  1. 准备加密仓目录。

    同一个用户可以使用多个不同的证书。一个用户首次准备Client证书时需要进行此步操作,之后再次为此用户准备证书时则不需要再次准备加密仓目录。

    1. 每个用户需要一个私有的加密仓目录,可以在用户的主目录下创建一个新目录作为加密仓,为了安全,将新创建的目录权限设置为0700,禁止其它用户访问。
      mkdir ~/crypt_repo
      chmod 0700 ~/crypt_repo
    2. 将seceasy_encrypt文件复制到创建的加密仓目录,确保seceasy_encrypt文件有执行权限,将权限设置为0500。
      cp /opt/boostio/bin/seceasy_encrypt ~/crypt_repo/
      chmod 0500 ~/crypt_repo/seceasy_encrypt
  2. 生成加密口令文件。

    为了防止Client端私钥的口令泄露,对口令进行加密后保存在文件中用于给Client进程使用。

    1. 进入加密仓目录,执行命令。
      cd ~/crypt_repo/
      ./seceasy_encrypt --encrypt 1 2
    2. 输入私钥口令。
      please input the password to encrypt {私钥口令}
      please input the password to encrypt again {私钥口令}
      encrypted: {Base64-Encoded-Data}

      连续两次输入相同的私钥口令后,工具输出Base64编码后的数据。

    3. 保存加密后的口令文件。

      复制上一步输出的Base64编码数据,保存到一个新文件中作为口令密文文件。

      echo "{Base64-Encoded-Data}" > clientkeypass.path
    4. 完成加密后,会生成根密钥文件,在当前目录下的tools下,分别有根密钥ksfa和备份根密钥ksfb两个文件,这两个文件的路径需要在4中使用。
      图1 根密钥文件
  3. 将准备好的CA文件、吊销证书列表文件(可选)、Client端证书文件、Client端证书对应的私钥文件放到用户目录下,例如“~/certs”
  4. 调用初始化接口,请参见《Kunpeng BoostKit 24.0.RC5 大数据BoostIO API参考》 > API参考 > BioInitialize章节。
    TLS涉及到的参数的成员如下:
    uint8_t enableTls;                      /*安全开关 ,此参数设置为非0,表示启动TLS认证 */
    char certificationPath[PATH_MAX + 1];   /* Client证书路径, 例如~/certs/clientcert.pem */
    char caCerPath[PATH_MAX + 1];           /* CA证书路径, 例如~/certs/cacert.pem */
    char caCrlPath[PATH_MAX + 1];           /* 吊销证书列表文件路径, 可选, 例如~/certs/cacrl.crl */
    char privateKeyPath[PATH_MAX + 1];      /* Client证书私钥路径, 例如~/certs/clientkey.pem */
    char privateKeyPassword[PATH_MAX + 1];  /* Client证书私钥口令密文文件路径, 例如~/crypt_repo/clientkeypass.path */
    char hseKfsMasterPath[PATH_MAX + 1];    /* Client证书私钥口令根密钥路径, 例如~/crypt_repo/tools/pmt/master/ksfa */
    char hseKfsStandbyPath[PATH_MAX + 1];   /* Client证书私钥口令备份根密钥路径, 例如~/crypt_repo/tools/pmt/standby/ksfb */
  5. 设置环境变量。

    Client端要使用TLS功能需要依赖一个环境变量,请在启动Client进程前提前设置好该环境变量。

    export HSECEASY_PATH=/opt/boostio/lib