开启Client端TLS认证
- 分离部署时才需要此步骤,且如需开启TLS认证,则BoostIO集群中的计算节点均需开启TLS认证,需登录到部署有BoostIO的计算节点上分别进行操作。
- 集群中所有的Client端和Server端必须同步开启或关闭TLS认证,否则会连接失败。
- 多用户访问BoostIO服务时,每个用户使用的证书可以是不同的,但必须满足都由同一个CA签发。
前提条件
BoostIO已经安装成功,本章节以安装目录/opt为例进行描述。首先准备好TLS认证需要的文件,如表1所示。
操作步骤
- 准备加密仓目录。
同一个用户可以使用多个不同的证书。一个用户首次准备Client证书时需要进行此步操作,之后再次为此用户准备证书时则不需要再次准备加密仓目录。
- 每个用户需要一个私有的加密仓目录,可以在用户的主目录下创建一个新目录作为加密仓,为了安全,将新创建的目录权限设置为0700,禁止其它用户访问。
mkdir ~/crypt_repo chmod 0700 ~/crypt_repo
- 将seceasy_encrypt文件复制到创建的加密仓目录,确保seceasy_encrypt文件有执行权限,将权限设置为0500。
cp /opt/boostio/bin/seceasy_encrypt ~/crypt_repo/ chmod 0500 ~/crypt_repo/seceasy_encrypt
- 每个用户需要一个私有的加密仓目录,可以在用户的主目录下创建一个新目录作为加密仓,为了安全,将新创建的目录权限设置为0700,禁止其它用户访问。
- 生成加密口令文件。
为了防止Client端私钥的口令泄露,对口令进行加密后保存在文件中用于给Client进程使用。
- 进入加密仓目录,执行命令。
cd ~/crypt_repo/ ./seceasy_encrypt --encrypt 1 2
- 输入私钥口令。
please input the password to encrypt {私钥口令} please input the password to encrypt again {私钥口令} encrypted: {Base64-Encoded-Data}
连续两次输入相同的私钥口令后,工具输出Base64编码后的数据。
- 保存加密后的口令文件。
复制上一步输出的Base64编码数据,保存到一个新文件中作为口令密文文件。
echo "{Base64-Encoded-Data}" > clientkeypass.path
- 完成加密后,会生成根密钥文件,在当前目录下的tools下,分别有根密钥ksfa和备份根密钥ksfb两个文件,这两个文件的路径需要在4中使用。
图1 根密钥文件
- 进入加密仓目录,执行命令。
- 将准备好的CA文件、吊销证书列表文件(可选)、Client端证书文件、Client端证书对应的私钥文件放到用户目录下,例如“~/certs”。
- 调用初始化接口,请参见 章节。
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 */
- 设置环境变量。
Client端要使用TLS功能需要依赖一个环境变量,请在启动Client进程前提前设置好该环境变量。
export HSECEASY_PATH=/opt/boostio/lib
父主题: 开启TLS认证