---
title: 开启Client端TLS认证
description: "- 分离部署时才需要此步骤，TLS开关(enableTls)由用户传入，建议用户开启TLS认证，BoostIO所有节点的TLS认证开启和关闭保持统一。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC1/sds/kunpengboostio_feature_016.html
sourcePath: /source/zh/kunpengboostkithistory/252RC1/sds/kunpengboostio_feature_016.html
indexId: ccc68dc2734a2c5f99926abcdcb032ecafbff7c26a5c05631826722efa983b1876
---
# 开启Client端TLS认证

#### 注意事项

- 分离部署时才需要此步骤，TLS开关(enableTls)由用户传入，建议用户开启TLS认证，BoostIO所有节点的TLS认证开启和关闭保持统一。
- 集群中所有的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证书时需要进行此步操作，之后再次为此用户准备证书时则不需要再次准备加密仓目录。


  a. 每个用户需要一个私有的加密仓目录，可以在用户的主目录下创建一个新目录作为加密仓，为了安全，将新创建的目录权限设置为0700，禁止其它用户访问。

```
mkdir
~
/crypt_repo
chmod 0700
~
/crypt_repo
```


  b. 将seceasy_encrypt文件复制到创建的加密仓目录，确保seceasy_encrypt文件有执行权限，将权限设置为0500。

```
cp /opt/boostio/bin/seceasy_encrypt
~
/crypt_repo/
chmod 0500
~
/crypt_repo/seceasy_encrypt
```


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

  a. 进入加密仓目录，执行命令。

```
cd
~
/crypt_repo/
./seceasy_encrypt --encrypt 1 2
```


  b. 输入私钥口令。

```
please input the password to encrypt
{私钥口令}
please input the password to encrypt again
{私钥口令}
encrypted:
{Base64-Encoded-Data}
```


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

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

```
echo "
{Base64-Encoded-Data}
" > clientkeypass.path
```


  d. 完成加密后，会生成根密钥文件，在当前目录下的tools下，分别有根密钥ksfa和备份根密钥ksfb两个文件，这两个文件的路径需要在    4
中使用。
    图1 根密钥文件

3. 将准备好的CA文件、吊销证书列表文件（可选）、Client端证书文件、Client端证书对应的私钥文件放到用户目录下，例如“~/certs”。
4. 调用初始化接口。请参见《Kunpeng BoostKit 25.1.RC1 BoostIO 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
```
