开启Client端TLS认证

- 如果关闭TLS认证,会存在较高的网络安全风险。
- TLS认证是节点内的Client和Server通信,不涉及跨节点通信,Client端和Server端必须同步开启或关闭TLS认证,否则Client端和Server端会连接失败。
- 多用户访问MindIO ACP服务时,每个用户使用的证书可以不同,但是需要由同一个CA签发。
- MindSpore不涉及TLS认证,默认不开启。
前提条件
MindIO ACP已经安装成功。
TLS证书准备

证书安全要求:
- 需使用业界公认安全可信的非对称加密算法、密钥长度、Hash算法、证书格式等。
- 应处于有效期内。
MindIO ACP不提供数字证书、CA证书、密钥、吊销证书列表文件,需自行准备表1所列文件。
文件 |
说明 |
---|---|
CA文件 |
证书颁发机构(CA)签发的证书,用于验证服务器证书和客户端证书的可信度。CA证书是信任链的基础,可以是根证书或中间证书。格式为:PEM(*.pem)。需要与Server端的CA文件相同。 |
Client端的证书 |
由CA签发的证书,保证在有效期内。它用于在TLS连接中验证服务器的身份,并加密传输的数据。服务端会使用CA证书来验证客户端证书的真实性。格式为:PEM chain(*.pem)。 |
Client端的证书对应的私钥文件 |
要与Client端证书对应。私钥用于解密服务端发送的加密数据,并用于在TLS握手过程中证明服务端的身份。该文件必须严格保密,不能泄露给任何第三方。安装者要知道这个私钥文件的口令。格式为:PEM encrypted(*.pem)。 |
seceasy_encrypt文件 |
安全加密工具。可参见表1。 |
吊销证书列表文件 |
包含由CA发布的已被吊销的证书列表。服务器和客户端可以使用CRL来检查某个证书是否已被吊销,从而决定是否信任该证书。CRL用于维护证书的有效性和安全性,防止使用已吊销的证书进行通信。扩展名为*.pem。如无吊销证书,则可以不准备。 |
操作步骤
- 准备加密仓目录。
同一个用户可以使用多个不同的证书。一个用户首次准备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 --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}" > password.txt
- 进入加密仓目录,执行命令。
- 调用初始化接口。
修改框架代码,在使用MindIO ACP服务之前初始化。
torch_mindio.initialize(tls_open=True, # 此参数设置为True,表示启动TLS认证 cert_path='/home/certs/client.pem', # 此参数设置为Client证书的路径 ca_path='/home/certs/ca.cert', # 此参数设置为CA的路径 pri_key_path='/home/keys/client_key.pem', # 此参数设置为私钥的路径 key_pass_path='{user.homedir}/crypt_repo/password.txt', # 此参数设置为加密仓目录中的口令文件 pmt_path='{user.homedir}/crypt_repo/tools/pmt', # 此参数设置为加密仓目录中的tools/pmt路径 crl_path='/home/certs/crl.crl' # 此参数设置为吊销证书路径,可选 )
- 设置环境变量。
Client端要使用TLS功能,需要依赖一个环境变量,在启动Client进程的时候,需要提前设置环境变量,例如:
export HSECEASY_PATH={Python安装目录}/lib/python3.7/site-packages/torch_mindio
路径请修改为torch_mindio实际安装路径。