开启Client端TLS认证

- Server端和Client端必须同步开启或关闭TLS认证,否则Client端和Server端会连接失败。
- 多用户访问MindIO ACP服务时,每个用户使用的证书可以是不同的,但是都需要由同一个CA签发。
- MindSpore不涉及TLS认证,默认不开启。
前提条件
MindIO ACP已经安装成功。
文件 |
说明 |
---|---|
CA文件 |
一个自签名的证书,可以签发其它证书。格式为:PEM(*.crt)。需要与Server端的CA文件相同。 |
Client端的证书 |
由CA签发的证书,保证在有效期内。格式为:PEM chain(*.pem)。 |
Client端的证书对应的私钥文件 |
要与Client端证书对应,安装者要知道这个私钥文件的口令。格式为:PEM encrypted(*.pem)。 |
seceasy_encrypt文件 |
安全加密工具。可参见表1。 |
操作步骤
- 准备加密仓目录。
同一个用户可以使用多个不同的证书。一个用户首次准备Client证书时,需要进行此步操作,之后再次为此用户准备证书时,不需要再次准备加密仓目录。
- 每个用户需要一个私有的加密仓目录,可以在用户的主目录下创建一个新目录作为加密仓,为了安全,将新创建的目录权限设置为0700,禁止其它用户访问。
mkdir ~/crypt_repo chmod 0700 ~/crypt_repo
- 将seceasy_encrypt文件复制到创建的加密仓目录,确保seceasy_encrypt文件有执行权限,将权限设置为0500。
cp {安装包解压路径}/seceasy_encrypt ~/crypt_repo/ chmod 0500 ~/crypt_repo/seceasy_encrypt
- 每个用户需要一个私有的加密仓目录,可以在用户的主目录下创建一个新目录作为加密仓,为了安全,将新创建的目录权限设置为0700,禁止其它用户访问。
- 生成加密口令文件。
为了防止Client端私钥的口令泄露,对口令进行加密后保存在文件中用于给Client进程使用。
- 进入加密仓目录,执行命令。
cd ~/crypt_repo/ ./seceasy_encrypt --enctrypt 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}" > password.txt
- 进入加密仓目录,执行命令。
- 调用初始化接口。
修改框架代码,在使用MindIO ACP服务之前初始化。
torch_mindio.initialize(tls_open=True, # 此参数设置为True,表示启动TLS认证 cert_path='/home/certs/client.pem', # 此参数设置为Client证书的路径 ca_path='/home/certs/ca.crt', # 此参数设置为CA的路径 pri_key_path='/home/keys/client_key.pem', # 此参数设置为私钥的路径 pmt_path='/home/sec_dir/tools/pmt', # 此参数设置为加密仓pmt路径 key_pass_path='{user.homedir}/crypt_repo/password.txt') # 此参数设置为加密仓目录中的“tools/pmt”路径
- 设置环境变量。
Client端要使用TLS功能,需要依赖一个环境变量,在启动Client进程的时候,需要提前设置环境变量。
export HSECEASY_PATH={Python安装目录}/lib/python3.7/site-packages/torch_mindio
父主题: 开启TLS认证