本页面介绍如何为 Cloud Next Generation Firewall 设置 传输层安全协议 (TLS) 检查 。
准备工作
在配置 TLS 检查之前,请完成以下部分中的任务。
启用 Certificate Authority Service
Cloud NGFW 使用 Certificate Authority Service 生成中间证书授权机构 (CA)。Cloud NGFW 使用这些中间 CA 来生成用于 TLS 检查的证书。
您可以使用 Google Cloud 控制台启用 CA Service API:
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色。
如需使用 Google Cloud CLI 启用 CA Service,请使用以下命令:
gcloud services enable privateca.googleapis.com
启用 Certificate Manager
Cloud NGFW 使用 Certificate Manager 创建信任配置。如果您不想使用信任配置,请跳过此步骤。
您可以使用 Google Cloud 控制台启用 Certificate Manager API:
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色。
如需使用 Google Cloud CLI 启用 Certificate Manager,请使用以下命令:
gcloud services enable certificatemanager.googleapis.com
创建信任配置
这是一个可选步骤。 如需创建信任配置,请按照本部分中的步骤操作。
-
您在此步骤中创建的 CA 池与您为配置 TLS 检查政策而创建的 CA 池不同。
使用您之前创建的 CA 池 创建根 CA。
或者,您也可以在 CA Service 中 创建从属 CA,以使用现有的外部根 CA。外部根 CA 必须为此从属 CA 签名。如需让 Cloud NGFW 使用 CA,CA 池中的根 CA 和从属 CA 的路径长度必须至少为 1。CA 证书中的
pathLenConstraint字段用于指定路径长度。此字段用于定义当前 CA 证书下的证书路径中可以存在的从属 CA 证书的最大数量。使用自动生成的密钥创建证书。 使用您之前创建的 CA 池的名称。
从创建的证书中获取 CA 的公共证书。
$PEM-CERT=$(gcloud privateca roots describe ROOT_CA_NAME \ --location LOCATION \ --project PROJECT_ID \ --pool CA_POOL \ --format "value(pemCaCertificates)")
请替换以下内容:
ROOT_CA_NAME:根 CA 的名称LOCATION:根 CA 的位置PROJECT_ID:根 CA 的项目 IDCA_POOL:创建证书的 CA 池的名称
使用上一步中获得的
PEM-CERT创建并导入信任配置。如果您使用自己的 CA,请使用从您的 CA 获取的公共证书。
您将使用此信任配置创建 TLS 检查政策。
创建 CA 池
您必须先创建 CA 池,然后才能使用 CA Service 创建 CA。
如需创建 CA 池,请按照 创建 CA 池中的说明操作。
您将使用此 CA 池创建 TLS 检查政策。
创建根 CA
如果您还没有根 CA,则可以在 CA Service 中创建一个。如需创建根 CA,请按照 创建根 CA中的说明操作, 并使用您之前创建的同一个 CA 池(请参阅 创建 CA 池部分)。
如需使用现有的外部根 CA, 请在 CA Service 中创建由外部根 CA 签名的从属 CA 。
对于 NGFW Enterprise,从属证书需要至少为 1 的路径长度限制,才能生成中间 CA。默认情况下,从属证书和 CSR 的生成路径长度限制为 0。您必须更改此设置。目前,您无法通过控制台执行此操作,只能通过 CAS 提供的 Google Cloud CLI 命令使用以下某些标志来执行此操作
--extended-key-usages标志:指定证书的扩展密钥用途。--key-usages标志:指定证书的密钥用途。--max-chain-length标志:定义 CA 证书在此 CA 下允许的从属 CA 的最大深度。
gcloud
gcloud privateca subordinates create SUBORDINATE_CA_ID \
--pool=SUBORDINATE_POOL_ID \
--location=LOCATION \
--create-csr --csr-output-file=FILE_NAME \
--key-algorithm="ec-p256-sha256" \
--subject="CN=Example Server TLS CA, O=Example LLC
--key-algorithm=rsa-pss-4096-sha256 \
--key-usages=cert_sign,crl_sign \
--extended-key-usages=server_auth \
--max-chain-length=1"
请替换以下内容:
- SUBORDINATE_CA_ID:从属 CA 的唯一标识符。
- SUBORDINATE_POOL_ID:CA 池的名称。
- LOCATION:CA 池的位置。
- FILE_NAME:用于写入 PEM 编码的 CSR 的文件的名称。
这会创建 CSR 并返回以下内容
Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.
如需激活从属 CA,您必须在创建 CSR 后为其签名。
创建服务帐号
如果您没有服务账号,则必须创建一个服务账号并授予所需的权限。
创建服务账号:
gcloud beta services identity create \ --service networksecurity.googleapis.com \ --project PROJECT_ID将
PROJECT_ID替换为服务账号的项目 ID。Google Cloud CLI 会创建一个名为
service-PROJECT_NUMBER@gcp-sa-networksecurity.iam.gserviceaccount.com的服务账号。 其中,PROJECT_NUMBER是您在上述命令中提供的PROJECT_ID的唯一标识符。向您的服务账号授予相应权限,以生成使用 CA 池的证书:
gcloud privateca pools add-iam-policy-binding CA_POOL \ --member 'serviceAccount:SERVICE_ACCOUNT' \ --role 'roles/privateca.certificateRequester' \ --location REGION请替换以下内容:
CA_POOL:创建证书的 CA 池的名称SERVICE_ACCOUNT:您在上一步中创建的服务账号的名称LOCATION:CA 池的区域
配置 TLS 检查
在执行本部分中的任务之前,请确保您已配置证书,或者已完成须知事项部分中列出的前提条件。
如需配置 TLS 检查,请完成以下部分中的任务。
创建 TLS 检查政策
控制台
在 Google Cloud 控制台中,前往 TLS 检查政策 页面。
在项目选择器菜单中,选择您的项目。
点击创建 TLS 检查政策 。
在名称部分,输入名称。
可选:在说明字段中,输入说明。
在区域列表中,选择要在其中创建 TLS 检查政策的区域。
在 CA 池列表中,选择要在其中创建证书的 CA 池。
如果您没有配置 CA 池,请点击新建池,然后按照创建 CA 池中的说明进行操作。
可选:在最低的 TLS 版本列表中,选择政策支持的最低 TLS 版本。
在信任配置部分中,选择以下选项之一:
可选:在加密套件配置文件 列表中,选择 TLS 配置文件的类型。您可以从下列值中选择一个:
- 兼容:可让数量最多的客户端(包括仅支持已过时的 TLS 功能的客户端)协商 TLS。
- 新型:支持大量 TLS 功能,可让新型客户端协商 TLS。
- 受限:支持的 TLS 功能较少,旨在满足更严格的合规要求。
自定义:可让您逐个选择 TLS 功能。
在加密套件列表中,选择自定义配置文件支持的 加密套件 的名称。
点击创建。
gcloud
创建 YAML 文件
TLS_INSPECTION_FILE.yaml。将TLS_INSPECTION_FILE替换为您选择的文件名。将以下代码添加到 YAML 文件中以配置 TLS 检查政策。
name: projects/PROJECT_ID/locations/REGION/tlsInspectionPolicies/TLS_INSPECTION_NAME caPool: projects/PROJECT_ID/locations/REGION/caPools/CA_POOL minTlsVersion: TLS_VERSION tlsFeatureProfile: PROFILE_TYPECIPHER_NAME excludePublicCaSet: `TRUE`|`FALSE` trustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME请替换以下内容:
PROJECT_ID:TLS 检查政策的项目 IDREGION:创建 TLS 检查政策的区域TLS_INSPECTION_NAME:TLS 检查政策的名称CA_POOL:创建证书的 CA 池的名称CA 池必须位于同一区域。
TLS_VERSION:可选参数,用于指定 Cloud NGFW 支持的最低 TLS 版本您可以从下列值中选择一个:
TLS_1_0TLS_1_1TLS_1_2
PROFILE_TYPE:可选参数,用于指定 TLS 配置文件的类型您可以从下列值中选择一个:
PROFILE_COMPATIBLE:可让数量最多的客户端(包括仅支持已过时的 TLS 功能的客户端)协商 TLS。PROFILE_MODERN:支持大量 TLS 功能,可让新型客户端协商 TLS。PROFILE_RESTRICTED:支持的 TLS 功能较少,旨在满足更严格的合规要求。PROFILE_CUSTOM:可让您逐个选择 TLS 功能。
CIPHER_NAME:可选参数,用于指定自定义配置文件支持的加密套件的名称仅当配置文件类型设置为
PROFILE_CUSTOM时,您才能指定此参数。excludePublicCaSet:可选标志,用于包含或排除公共 CA 集。 此标志默认设置为 false。此标志设置为 true 时,TLS 连接不信任公共 CA 服务器。在这种情况下,Cloud NGFW 只能与具有信任配置中的 CA 签名的证书的服务器建立 TLS 连接。TRUST_CONFIG_NAME:可选参数,用于指定信任配置资源的名称
导入您在创建 TLS 检查政策部分中创建的 TLS 检查政策
gcloud network-security tls-inspection-policies import TLS_INSPECTION_NAME \ --source TLS_INSPECTION_FILE.yaml \ --location REGION替换以下内容:
TLS_INSPECTION_NAME:TLS 检查政策的名称TLS_INSPECTION_FILE:TLS 检查政策 YAML 文件的名称
将 TLS 检查政策添加到防火墙端点关联
如需将 TLS 检查政策添加到防火墙端点关联,请按照 创建防火墙端点关联中所述的步骤操作。
使用 TLS 检查配置防火墙政策规则
如需为您的 Virtual Private Cloud (VPC) 网络启用 TLS 检查,请在防火墙政策规则中设置 --tls-inspect 标志。此标志表示
在应用
安全配置文件组
时,可以执行 TLS 检查。
如需详细了解如何在分层防火墙
政策规则中启用 --tls-inspect 标志,请参阅创建规则。
如需详细了解如何在全局网络防火墙
政策规则中启用 --tls-inspect 标志,请参阅创建规则。