本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用证书身份验证配置 IPsec
以下主题对在 FSx for ONTAP 文件系统和运行 Libreswan IPsec 的客户端上使用证书身份验证配置 IPsec 加密进行了说明。此解决方案使用 AWS Certificate Manager 和 AWS 私有证书颁发机构 来创建私有证书颁发机构并生成证书。
在 FSx for ONTAP 文件系统和连接的客户端上使用证书身份验证配置 IPsec 加密的概括步骤如下:
设立证书颁发机构来颁发证书。
为文件系统和客户端生成和导出 CA 证书。
在客户端实例上安装证书并配置 IPsec。
在您的文件系统上安装证书并配置 IPsec。
定义安全策略数据库(SPD)。
配置 IPsec 以实现多客户端访问。
创建和安装 CA 证书
要进行证书身份验证,您需要在 FSx for ONTAP 文件系统和将访问文件系统上数据的客户端上生成并安装来自证书颁发机构的证书。以下示例 AWS 私有证书颁发机构 用于设置私有证书颁发机构,并生成要安装在文件系统和客户端上的证书。使用 AWS 私有证书颁发机构,您可以创建完全 AWS 托管的根证书颁发机构和从属证书颁发机构 (CA) 层次结构,供组织内部使用。此过程分为五个步骤:
使用创建私有证书颁发机构 (CA) AWS 私有 CA
在私有 CA 上颁发并安装根证书
从 AWS Certificate Manager 为您的文件系统和客户端申请私有证书
为文件系统和客户端导出证书。
有关更多信息,请参阅《 AWS 私有证书颁发机构 用户指南》中的私有 CA 管理。
创建根私有 CA
创建 CA 时,必须在提供的文件中指定 CA 配置。以下命令使用 Nano 文本编辑器创建
ca_config.txt文件,指定以下信息:算法的名称
CA 用来签名的签名算法
X.500 主题信息
$ >nano ca_config.txt随即显示文本编辑器。
编辑 CA 规范文件。
{ "KeyAlgorithm":"RSA_2048", "SigningAlgorithm":"SHA256WITHRSA", "Subject":{ "Country":"US", "Organization":"Example Corp", "OrganizationalUnit":"Sales", "State":"WA", "Locality":"Seattle", "CommonName":"*.ec2.internal" } }保存并关闭文件,退出文本编辑器。有关更多信息,请参阅《 AWS 私有证书颁发机构 用户指南》中的创建 CA 的步骤。
使用 create-certificate-authority AWS 私有 CA CLI 命令创建私有 CA。
~/home >aws acm-pca create-certificate-authority \ --certificate-authority-configuration file://ca_config.txt \ --certificate-authority-type "ROOT" \ --idempotency-token 01234567 --regionaws-region如果成功,此命令将输出 CA 的 Amazon 资源名称(ARN)。
{ "CertificateAuthorityArn": "arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012" }
为私有根 CA 创建和安装证书(AWS CLI)
使用
get-certificate-authority-csrAWS CLI 命令生成证书签名请求 (CSR)。$aws acm-pca get-certificate-authority-csr \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --output text \ --endpoint https://acm-pca.aws-region.amazonaws.com \ --region eu-west-1 > ca.csr生成的文件
ca.csr是以 base64 格式编码的 PEM 文件,其内容显示如下。-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE= -----END CERTIFICATE-----有关更多信息,请参阅 AWS 私有证书颁发机构 用户指南中的安装根 CA 证书。
使用
issue-certificateAWS CLI 命令在您的私有 CA 上颁发和安装根证书。$aws acm-pca issue-certificate \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --csr file://ca.csr \ --signing-algorithm SHA256WITHRSA \ --template-arn arn:aws:acm-pca:::template/RootCACertificate/V1 \ --validity Value=3650,Type=DAYS --regionaws-region-
使用
get-certificateAWS CLI 命令下载根证书。$aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --certificate-arn arn:aws:acm-pca:aws-region:486768734100:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef0123456789abcdef0123456789 \ --output text --regionaws-region> rootCA.pem 使用
import-certificate-authority-certificateAWS CLI 命令在您的私有 CA 上安装根证书。$aws acm-pca import-certificate-authority-certificate \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --certificate file://rootCA.pem --regionaws-region
生成并导出文件系统和客户端证书
使用
request-certificateAWS CLI 命令请求 AWS Certificate Manager 证书以在您的文件系统和客户机上使用。$aws acm request-certificate \ --domain-name *.ec2.internal \ --idempotency-token 12345 \ --regionaws-region\ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012如果请求成功,则返回颁发证书的 ARN。
-
为了安全起见,您必须在导出私钥时为其分配密码。创建密码并将其存储在名为
passphrase.txt的文件中 -
使用
export-certificateAWS CLI 命令导出之前颁发的私有证书。导出的文件包含证书、证书链以及与证书中嵌入的公钥关联的加密私有 2048 位 RSA 密钥。为了安全起见,您必须在导出私钥时为其分配密码。以下示例是 Linux EC2 实例。$aws acm export-certificate \ --certificate-arn arn:aws:acm:aws-region:111122223333:certificate/12345678-1234-1234-1234-123456789012 \ --passphrase $(cat passphrase.txt | base64) --regionaws-region> exported_cert.json 使用以下
jq命令从 JSON 响应中提取私钥和证书。$passphrase=$(cat passphrase.txt | base64) cat exported_cert.json | jq -r .PrivateKey > prv.key cat exported_cert.json | jq -r .Certificate > cert.pem-
使用以下
openssl命令从 JSON 响应中解密私钥。输入命令后,系统会提示您输入密码。$openssl rsa -in prv.key -passin pass:$passphrase -out decrypted.key
在 Amazon Linux 2 客户端上安装和配置 Libreswan IPsec
以下各节提供了在运行 Amazon Linux 2 的 Amazon EC2 实例上安装和配置 Libreswan IPsec 的说明。
安装和配置 Libreswan
使用 SSH 连接到 EC2 实例。有关如何执行此操作的具体说明,请参阅《适用于 Linux 实例的 Amazon Elastic Compute Cloud 用户指南》中的使用 SSH 客户端连接到 Linux 实例。
运行以下命令安装
libreswan:$sudo yum install libreswan(可选)在后续步骤中验证 IPsec 时,如果没有这些设置,可能会标记这些属性。我们建议在没有这些设置的情况下先测试您的设置。如果连接出现问题,请返回此步骤并进行以下更改。
安装完成后,使用您的首选文本编辑器将以下条目添加到
/etc/sysctl.conf文件中。net.ipv4.ip_forward=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.eth0.rp_filter = 0保存更改,退出文本编辑器。
应用更改。
$sudo sysctl -p验证 IPsec 配置。
$sudo ipsec verify验证您安装的
Libreswan版本是否正常运行。初始化 IPsec NSS 数据库。
$sudo ipsec checknss
在客户端上安装证书
将您为客户端生成的证书复制到 EC2 实例上的工作目录中。You
将之前生成的证书导出为与
libreswan兼容的格式。$openssl pkcs12 -export -in cert.pem -inkey decrypted.key \ -certfile rootCA.pem -out certkey.p12 -name fsx导入重新格式化的密钥,并在系统提示时提供密码。
$sudo ipsec import certkey.p12使用首选文本编辑器创建 IPsec 配置文件。
$sudo cat /etc/ipsec.d/nfs.conf将以下条目添加到配置文件:
conn fsxn authby=rsasig left=172.31.77.6 right=198.19.254.13 auto=start type=transport ikev2=insist keyexchange=ike ike=aes256-sha2_384;dh20 esp=aes_gcm_c256 leftcert=fsx leftrsasigkey=%cert leftid=%fromcert rightid=%fromcert rightrsasigkey=%cert
在文件系统上配置 IPsec 后,您将在客户端上启动 IPsec。
在文件系统上配置 IPsec
本节提供有关在 FSx for ONTAP 文件系统上安装证书以及配置 IPsec 的说明。
在文件系统上安装证书
将根证书(
rootCA.pem))、客户端证书(cert.pem)和解密的密钥(decrypted.key)文件复制到您的文件系统。您需要知道证书的密码。要访问 ONTAP CLI,请运行以下命令,在适用于 NetApp ONTAP 文件系统的 Amazon FSx 或 SVM 的管理端口上建立 SSH 会话。将
替换为文件系统管理端口的 IP 地址。management_endpoint_ip[~]$ssh fsxadmin@management_endpoint_ip有关更多信息,请参阅 使用 ONTAP CLI 管理文件系统。
在客户端(而不是在您的文件系统)上使用 cat 列出
rootCA.pem、cert.pem和decrypted.key文件的内容,以便复制每个文件的输出并在系统提示时粘贴到以下步骤中。$ >cat cert.pem复制证书内容。
除非已经安装(例如 ONTAP 自签名 root-CA),否则您必须将双向身份验证期间使用的所有 CA ONTAP 证书(包括两者 ONTAP-side 以及客户端 CA)安装到证书管理中。
按如下方式使用
security certificate installNetApp CLI 命令安装客户证书:FSxID123:: >security certificate install -vserverdr-type client -cert-name ipsec-client-certPlease enter Certificate: Press <Enter> when done粘贴您之前复制的
cert.pem文件的内容,然后按 Enter。Please enter Private Key: Press <Enter> when done粘贴
decrypted.key文件的内容,然后按 Enter。Do you want to continue entering root and/or intermediate certificates {y|n}:输入
n以完成客户端证书的输入。创建并安装证书以供 SVM 使用。此证书的颁发者 CA 必须已安装到 ONTAP 并已添加到 IPsec 中。
使用以下命令来安装根证书:
FSxID123:: >security certificate install -vserverdr-type server-ca -cert-name ipsec-ca-certPlease enter Certificate: Press <Enter> when done粘贴
rootCA.pem文件的内容,然后按 Enter。要确保身份验证期间安装的 CA 位于 IPsec CA 搜索路径中,请使用“security ipsec ca-certificate add”命令将 ONTAP 证书管理 CA 添加到 IPsec 模块。
输入以下命令来添加根证书。
FSxID123:: >security ipsec ca-certificate add -vserverdr-ca-certs ipsec-ca-cert输入以下命令,在安全策略数据库(SPD)中创建所需的 IPsec 策略。
security ipsec policy create -vserverdr-namepolicy-name-local-ip-subnets198.19.254.13/32-remote-ip-subnets172.31.0.0/16-auth-method PKI -action ESP_TRA -cipher-suite SUITEB_GCM256 -cert-name ipsec-client-cert -local-identity "CN=*.ec2.internal" -remote-identity "CN=*.ec2.internal"使用以下命令显示 IPsec 策略,以便文件系统确认。
FSxID123:: >security ipsec policy show -vserverdr-instanceVserver: dr Policy Name: promise Local IP Subnets: 198.19.254.13/32 Remote IP Subnets: 172.31.0.0/16 Local Ports: 0-0 Remote Ports: 0-0 Protocols: any Action: ESP_TRA Cipher Suite: SUITEB_GCM256 IKE Security Association Lifetime: 86400 IPsec Security Association Lifetime: 28800 IPsec Security Association Lifetime (bytes): 0 Is Policy Enabled: true Local Identity: CN=*.ec2.internal Remote Identity: CN=*.ec2.internal Authentication Method: PKI Certificate for Local Identity: ipsec-client-cert
在客户端上启动 IPsec
现在,FSx for ONTAP 文件系统和客户端上都配置了 IPsec,您可以在客户端上启动 IPsec。
使用 SSH 连接到文件系统。
启动 IPsec。
$sudo ipsec start检查 IPsec 的状态。
$sudo ipsec status在您的文件系统上挂载卷。
$sudo mount -t nfs198.19.254.13:/benchmark/home/ec2-user/acm/dr在 FSx for ONTAP 文件系统上显示加密连接,以验证 IPsec 设置。
FSxID123:: >security ipsec show-ikesa -node FsxId123FsxId08ac16c7ec2781a58::> security ipsec show-ikesa -node FsxId08ac16c7ec2781a58-01 Policy Local Remote Vserver Name Address Address Initator-SPI State ----------- ------ --------------- --------------- ---------------- ----------- drpolicy-name198.19.254.13 172.31.77.6 551c55de57fe8976 ESTABLISHED fsxpolicy-name198.19.254.38 172.31.65.193 4fd3f22c993e60c5 ESTABLISHED 2 entries were displayed.
为多个客户端设置 IPsec
当少数客户端需要利用 IPsec 时,为每个客户端使用一个 SPD 条目就足够了。但是,如果成百上千个客户端需要利用 IPsec,我们建议您使用 IPsec 多客户端配置。
FSx for ONTAP 支持在启用 IPsec 的情况下将跨多个网络的多个客户端连接到单个 SVM IP 地址。您可以使用 subnet 配置或 Allow all clients 配置来完成此操作,详细过程如下:
使用子网配置为多个客户端配置 IPsec
允许特定子网上的所有客户端 (192.168.134. 0/24 例如)要使用单个 SPD 策略条目连接到单个 SVM IP 地址,则必须以子网remote-ip-subnets形式指定。此外,您必须使用正确的客户端标识来指定 remote-identity 字段。
重要
使用证书身份验证时,每个客户端都可以使用其唯一证书或共享证书进行身份验证。FSx for ONTAP IPsec 会根据其本地信任存储上安装的 CA 来检查证书的有效性。FSx for ONTAP 还支持证书吊销列表(CRL)检查。
要访问 ONTAP CLI,请运行以下命令,在适用于 NetApp ONTAP 文件系统的 Amazon FSx 或 SVM 的管理端口上建立 SSH 会话。将
替换为文件系统管理端口的 IP 地址。management_endpoint_ip[~]$ssh fsxadmin@management_endpoint_ip有关更多信息,请参阅 使用 ONTAP CLI 管理文件系统。
按如下方式使用
security ipsec policy createNetApp ONTAP CLI 命令,用您的特定sample值替换这些值。FsxId123456::>security ipsec policy create -vserversvm_name-namepolicy_name\ -local-ip-subnets192.168.134.34/32-remote-ip-subnets192.168.134.0/24\ -local-ports2049-protocolstcp-auth-method PSK \ -cert-namemy_nfs_server_cert-local-identityontap_side_identity\ -remote-identityclient_side_identity
使用允许所有客户端的配置为多个客户端配置 IPsec
要允许任何客户端(无论其源 IP 地址如何)连接到 SVM IPsec-enabled IP 地址,请在指定remote-ip-subnets字段时使用通0.0.0.0/0配符。
此外,您必须使用正确的客户端标识来指定 remote-identity 字段。对于证书身份验证,您可以输入 ANYTHING。
另外,在 0.0.0 的时候。 0/0 使用通配符,必须配置特定的本地或远程端口号才能使用。例如,NFS 端口 2049。
要访问 ONTAP CLI,请运行以下命令,在适用于 NetApp ONTAP 文件系统的 Amazon FSx 或 SVM 的管理端口上建立 SSH 会话。将
替换为文件系统管理端口的 IP 地址。management_endpoint_ip[~]$ssh fsxadmin@management_endpoint_ip有关更多信息,请参阅 使用 ONTAP CLI 管理文件系统。
按如下方式使用
security ipsec policy createNetApp ONTAP CLI 命令,用您的特定sample值替换这些值。FsxId123456::>security ipsec policy create -vserversvm_name-namepolicy_name\ -local-ip-subnets192.168.134.34/32-remote-ip-subnets 0.0.0.0/0 \ -local-ports2049-protocolstcp-auth-method PSK \ -cert-namemy_nfs_server_cert-local-identityontap_side_identity\ -local-ports2049-remote-identityclient_side_identity