为区域文件共享建立传输中加密

使用IPsec安全协议和 X.509 证书,为区域文件共享建立加密挂载连接,以实现安全的端到端数据加密。

IPsec 是一组协议,共同建立设备之间的加密连接。 它有助于确保通过公共网络发送的数据安全。 IPsec 对 IP 数据包进行加密,并验证数据包的来源。 要在虚拟服务器实例上配置 IPsec,可以使用 strongSwan,这是一个基于 IPsec 的开源 VPN 解决方案。 有关 strongSwan 如何工作的更多信息,请参阅 strongSwan 和 IPsec 协议strongSwan

IPsec 连接要求使用 X.509 证书进行身份验证。 X.509 是公钥证书的国际标准格式,是将加密密钥对与网站、个人或组织等身份安全关联的数字文档。 元数据服务用于创建证书。

证书签名请求(CSR)是用户申请证书时转发给证书颁发机构(CA)的一组编码文本。 在安装证书的服务器上创建 CSR。 CSR 包括域名、组织名称、地区和国家等信息。 该请求还包含与生成的证书相关联的公钥和私钥。 CA 在创建证书时只使用公开密钥。 私人密钥必须保存并保密。 由于私钥是与公钥配对的密钥的一部分,如果私钥丢失,证书将无法使用。

当您使用 IPsec 连接挂载区域文件共享时,在维护或节点故障期间可能会发生临时挂载中断。 在极少数情况下,配置了 IPsec 的挂载可能会出现长达 3 分钟的服务中断。 有关更多信息,请参阅《 维护期间,已配置 IPsec 的区域文件共享可能出现挂载中断 》。

在开始使用 IPsec 配置传输中加密之前

使用该功能需要满足以下要求:

IBM Cloud® 文件服务提供了一个 “挂载助手”(Mount Helper)实用程序,用于自动执行在计算主机上进行的以下任务。

如果要将文件共享连接到一个区域内不同 VPC 中运行的实例,可以创建多个挂载目标。 您可以为每个 VPC 创建一个挂载目标。

获取实例身份证书

获取验证所需的 X.509 证书。 同一证书不能在多个地区使用。

  1. 以下命令使用 openssl 生成证书签名请求 (CSR)和 RSA 密钥对

    openssl req -sha256 -newkey rsa:4096 -subj '/C=US' -out ./sslcert.csr -keyout file.key -nodes
    

    运行该命令时,请将 US 中的国家代码替换为 '/C=US' 中的两位数国家代码。

    OpenSSL 这是一个开源的命令行工具包,可用于处理 X.509 证书、证书签名请求(CSR)和加密密钥。 如需了解更多信息,请参阅 OpenSSL 文档

    如果您使用不同的软件来创建 CSR,系统可能会提示您输入有关您所在位置的信息。 您的位置信息可包括国家代码 (C)、州 (ST)、地区 (L)、组织名称 (O) 和组织单位 (OU)。 可以使用其中任何一个命名属性。 任何其他命名属性,如通用名称,都将被拒绝。 指定了通用名的 CSR 会被拒绝,因为在您提出申请时,系统会自动将实例 ID 值应用到实例身份证书的主题通用名。 带有扩展名的 CSR 也会被拒绝。

  2. 在调用元数据服务的 API 之前,使用以下命令格式化 csr。

    awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' sslcert.csr
    
  3. 然后,使用 虚拟服务器实例裸机服务器 上的元数据服务创建客户端证书。

    1. 发出 PUT /instance_identity/v1/token (虚拟服务器实例)或 PUT /identity/v1/tokens (裸机服务器)请求,从 VPC 身份服务获取令牌,用于后续调用。 有关更多信息,请参阅以下主题:
    2. 使用身份令牌创建身份证书。 申请 POST /instance_identity/v1/certificates 虚拟服务器实例或 POST /identity/v1/certificates 裸机服务器。 在 HTTP 授权标头中指定身份令牌,加上证书签名请求(作为 csr 属性)和有效期(作为 expires_in 属性)。 调用会返回一个新的客户端证书和中间证书链,允许客户端使用 IPsec Encryption in Transit 访问文件共享。 有关更多信息,请参阅以下主题:
    3. 复制 API 响应输出,包括 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 行,并将其保存到一个具有可识别名称的文件中,如 ca-cert.pem。 确保创建的文件扩展名为 .pem
  4. 复制 /etc/ipsec.d/cacerts 目录中的实例身份证书。

    sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
    

配置主机并挂载共享

  1. 安装并配置 strongSwan 客户端。 您必须为挂载目标地址配置 IPsec 传输模式

  2. 确保安装了身份验证所需的插件 (libcharon-extra-plugins),并根据实例身份证书的位置更新了配置文件。

  3. 启动 strongSwan 客户端,建立安全连接。

  4. 挂载文件共享。