为您的门户配置自定义域 - Amazon WorkSpaces 安全浏览器

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为您的门户配置自定义域

工作原理

配置自定义域名时:

  • 您可以使用自定义域创建和配置反向代理,以将流量路由到门户终端节点。

  • 用户通过您的自定义域而不是默认的门户终端节点访问您的门户。

  • SSL 证书可确保整个过程的安全连接。

先决条件

在设置自定义域名之前,请确保您已经:

  • 您通过 DNS 服务提供商(例如 Amazon Route53)管理的域名。

  • WorkSpaces 安全浏览器门户。有关创建门户的更多信息,请参阅为 Amazon WorkSpaces 安全浏览器创建门户

  • 确保您拥有管理 AWS Certifice Manager 和 DNS 配置所需的权限。 CloudFront

重要

用户必须在其浏览器中为自定义域启用第三方 Cookie,以确保门户网站功能正常。

确保您拥有并正确管理自定义域及其 DNS 记录,以维护门户的安全性和功能。

注意

要为自定义域启用单点登录扩展程序,用户必须在其浏览器中安装版本高于 1.0.2505.6608 的扩展程序。

当用户登录门户时,系统会提示他们安装扩展。有关该扩展的用户体验的详细信息,请参阅Amazon WorkSpaces 安全浏览器的单点登录扩展程序

开始使用

在创建新门户或编辑现有门户时,您可以将自定义域配置为门户设置属性。这可以使用 AWS 控制台、SDK CloudFormation 或 AWS CLI 命令来完成。

我们建议将 Amazon CloudFront 分配设置为反向代理,将来自您的自定义域的流量路由到 WorkSpaces 安全浏览器门户终端节点。

注意

尽管建议 CloudFront 将 Amazon 作为反向代理解决方案,但您可以使用其他反向代理配置。确保您满足 Amazon 设置步骤中详述的所需来源和缓存配置 CloudFront 设置。

设置 CloudFront 为反向代理

要完成反向代理的设置,您需要:

  • 通过 AWS Certificate Manager (ACM) 获得 SSL 证书

  • 亚马逊 CloudFront 配送

  • DNS 记录

  • 使用您的自定义域名配置的门户

SSL 证书

如果您还没有,请按照以下步骤通过 ACM 申请一个:

  1. 导航到 ACM 控制台,网址为。https://console.aws.amazon.com/acm

    重要

    使用美国东部(弗吉尼亚北部)区域,因为 CloudFront 需要将证书存储在那里。

  2. 申请证书:

    • 对于新 ACM 用户:在 “配置证书” 下选择 “开始

    • 对于现有 ACM 用户:选择申请证书

  3. 选择 “申请公共证书”,然后选择 “申请证书”。

    注意

    您也可以导入现有证书。有关更多信息,请参阅《ACM 用户指南》中的将证书导入 ACM

  4. 输入您的主域名(例如,myportal.example.com)。

  5. 选择验证方法:

    • DNS 验证(建议对 Route 53 用户使用)-允许在您的托管区域中自动创建记录集。有关更多信息,请参阅《ACM 用户指南》中的 DNS 验证

    • 电子邮件验证-有关更多信息,请参阅《ACM 用户指南》中的电子邮件验证

  6. 查看您的设置,然后选择确认并申请

CloudFront 分配

为从您的自定义域到门户终端节点的代理请求创建 CloudFront 分配。

  1. 导航到 CloudFront 控制台,网址为https://console.aws.amazon.com/cloudfront

  2. 选择 Create Distribution(创建分配)。

    • 分发名称:输入分配的名称

    • 分发类型:单个网站或应用程序

    注意

    如果您的自定义域名在 Route 53 中使用同一 AWS 账户进行管理,则 CloudFront 可以自动为您管理您的 DNS。输入您的自定义域名,然后单击 “检查域名”。如果您有来自其他 DNS 提供商的域名,请跳过此步骤,稍后再配置您的域名。

  3. 配置起源设置:

    • 产地类型:其他

    • 自定义来源:输入门户端点 <portalId> .workspaces-web.com

    • 原始路径:留空(默认)

  4. 自定义起源设置:

    • 添加自定义标头

      重要

      只有在代理请求中存在此标头时,才能通过自定义域进行门户访问。确保标头名称和值的指定完全如上所述。

      • 标题名称: workspacessecurebrowser-custom-domain

      • :您的自定义域名(例如,myportal.example.com

    • 协议:仅限 HTTPS

    • HTTPS 端口:443(保持默认值)

    • 原始 SSL 协议的最低要求: TLSv1.2(默认)

    • 来源 IP 地址类型: IPv4 仅限(在撰写本管理指南 IPv6 时,亚马逊 WorkSpaces 安全浏览器尚不支持。)

  5. 自定义缓存设置:

    • 查看器协议策略:将 HTTP 重定向到 HTTPS

    • 允许的 HTTP 方法:GET、HEAD、OPTIONS、PUT、POST、PATCH

    • 缓存策略: CachingDisabled

    • 起源请求政策: AllViewerExceptHostHeader

      重要

      只有将原始请求策略设置为,才能通过自定义域进行门户访问 AllViewerExceptHostHeader。顾名思义,此策略仅从请求标头中过滤掉主机标头,并将所有剩余的标头传递给源。

  6. 您可以根据需要配置 WAF,但对于此设置而言,这不是必需的。

  7. 在获取 TLS 证书中,选择在步骤 1 中创建的 TLS 证书。

  8. 查看设置并选择 “创建分发”。

DNS 记录

如果您的托管区域位于同一 AWS 账户中,Cloudfront 可以更新您在 Route 53 中的 DNS 记录,将来自指定域的流量路由到步骤 2 中创建的分配。

  1. 导航到 CloudFront 设置

  2. 点击 “将域名路由至 CloudFront”

  3. 单击 “自动设置路由”

如果您已在其他服务提供商或其他 AWS 账户中为自定义域配置了 DNS,请将您的 DNS 提供商配置为将您的域的流量路由到分配。以下步骤描述了如何使用 Route 53 执行此操作。

  1. 打开亚马逊 Route 53 控制台,网址为https://console.aws.amazon.com/route53

  2. 访问 DNS 管理:

    • 如果您不熟悉通过此 AWS 账户使用 Route 53,则会打开亚马逊 Route 53 概述页面。在 DNS 管理下,选择立即开始

    • 如果您之前使用过此 AWS 账户 Route 53,请继续下一步。

  3. 在导航窗格中,选择 Hosted zones(托管区域)

  4. 如果您还没有托管区域,请创建一个托管区域:

  5. 托管区域页面上,选择要管理的托管区域的名称。

  6. 请选择 Create Record Set

  7. 为您的域名创建一个条目(例如,myportal.example.com):

    • 类型:A — IPv4 地址

    • 别名:是

    • 别名目标: CloudFront 分发 URL

    将所有其他设置保留为默认值。

注意

如果您没有使用 Route 53 来管理您的域名的 DNS,请使用您的 DNS 服务提供商,并将指向您的域的 DNS 条目添加到 CloudFront 分配的 URL 中。

或者,您可以使用以下 CloudFormation 模板来创建 CloudFront 分配:

此 CloudFormation 模板会自动创建 CloudFront 分发、配置反向代理设置,并可选择创建 Route53 DNS 记录:

例 workspaces-web-custom-domain-template.yaml
AWSTemplateFormatVersion: '2010-09-09' Description: 'CloudFront Distribution for custom domain configuration with existing AWS WorkSpaces Secure Browser Portal' Parameters: PortalEndpoint: Type: String Description: 'The endpoint of your existing WorkSpaces Web Portal (e.g., abc123.workspaces-web.com)' AllowedPattern: '^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)?\.workspaces-web\.com$' ConstraintDescription: 'Must be a valid WorkSpaces Web portal endpoint' CustomDomainName: Type: String Description: 'Custom domain name for the portal (e.g., myportal.example.com)' AllowedPattern: '^([a-zA-Z0-9]?((?!-)([A-Za-z0-9-]*[A-Za-z0-9])\.)+[a-zA-Z0-9]+)$' ConstraintDescription: 'Must be a valid domain name' CertificateArn: Type: String Description: 'ARN of the validated SSL certificate in ACM (must be in us-east-1 region for CloudFront)' AllowedPattern: 'arn:aws:acm:us-east-1:[0-9]{12}:certificate/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}' ConstraintDescription: 'Must be a valid ACM certificate ARN in us-east-1 region' CreateRoute53Record: Type: String Description: 'Create Route53 record for custom domain (requires existing hosted zone)' Default: 'No' AllowedValues: - 'Yes' - 'No' HostedZoneId: Type: String Description: 'Route53 Hosted Zone ID for the custom domain (required if creating Route53 record)' Default: '' Conditions: ShouldCreateRoute53Record: !And - !Equals [!Ref CreateRoute53Record, 'Yes'] - !Not [!Equals [!Ref HostedZoneId, '']] Resources: # CloudFront Distribution CloudFrontDistribution: Type: AWS::CloudFront::Distribution Properties: DistributionConfig: Aliases: - !Ref CustomDomainName Comment: !Sub 'CloudFront distribution for WorkSpaces Web Portal - ${CustomDomainName}' Enabled: true HttpVersion: http2 IPV6Enabled: false # WorkSpaces Secure Browser does not support IPv6 PriceClass: PriceClass_All # Origin Configuration Origins: - Id: WorkSpacesWebOrigin DomainName: !Ref PortalEndpoint CustomOriginConfig: HTTPSPort: 443 OriginProtocolPolicy: https-only OriginSSLProtocols: - TLSv1.2 OriginCustomHeaders: - HeaderName: workspacessecurebrowser-custom-domain HeaderValue: !Ref CustomDomainName # Default Cache Behavior DefaultCacheBehavior: TargetOriginId: WorkSpacesWebOrigin ViewerProtocolPolicy: https-only AllowedMethods: - GET - HEAD - OPTIONS - PUT - POST - PATCH - DELETE Compress: false # Cache Policy: CachingDisabled (using predefined managed policy) CachePolicyId: 4135ea2d-6df8-44a3-9df3-4b5a84be39ad # Origin Request Policy: AllViewerExceptHostHeader (using predefined managed policy) OriginRequestPolicyId: b689b0a8-53d0-40ab-baf2-68738e2966ac # SSL Configuration ViewerCertificate: AcmCertificateArn: !Ref CertificateArn SslSupportMethod: sni-only MinimumProtocolVersion: TLSv1.2_2021 Tags: - Key: Name Value: !Sub '${AWS::StackName}-cloudfront' # Route 53 Record (optional - requires hosted zone to exist) Route53Record: Type: AWS::Route53::RecordSet Condition: ShouldCreateRoute53Record Properties: HostedZoneId: !Ref HostedZoneId Name: !Ref CustomDomainName Type: A AliasTarget: DNSName: !GetAtt CloudFrontDistribution.DomainName HostedZoneId: Z2FDTNDATAQYW2 # CloudFront Hosted Zone ID EvaluateTargetHealth: false Outputs: PortalEndpoint: Description: 'WorkSpaces Web Portal endpoint used as origin' Value: !Ref PortalEndpoint Export: Name: !Sub '${AWS::StackName}-PortalEndpoint' CustomDomainEndpoint: Description: 'Custom domain endpoint for the portal' Value: !Sub 'https://${CustomDomainName}' Export: Name: !Sub '${AWS::StackName}-CustomDomainEndpoint' CloudFrontDistributionId: Description: 'CloudFront Distribution ID' Value: !Ref CloudFrontDistribution Export: Name: !Sub '${AWS::StackName}-CloudFrontDistributionId' CloudFrontDomainName: Description: 'CloudFront Distribution Domain Name' Value: !GetAtt CloudFrontDistribution.DomainName Export: Name: !Sub '${AWS::StackName}-CloudFrontDomainName' CertificateArn: Description: 'SSL Certificate ARN used by CloudFront' Value: !Ref CertificateArn Export: Name: !Sub '${AWS::StackName}-CertificateArn' Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: "Existing Portal Configuration" Parameters: - PortalEndpoint - Label: default: "Custom Domain Configuration" Parameters: - CustomDomainName - CertificateArn - CreateRoute53Record - HostedZoneId ParameterLabels: PortalEndpoint: default: "Portal Endpoint" CustomDomainName: default: "Custom Domain Name" CertificateArn: default: "SSL Certificate ARN" CreateRoute53Record: default: "Create Route53 Record" HostedZoneId: default: "Hosted Zone ID"

要使用此模板,请执行以下操作:

  1. 将上面的模板另存为 workspaces-web-custom-domain-template.yaml

  2. 使用 AWS 控制台、 AWS CLI 或 AWS SDK 以及您的特定参数值进行部署

  3. 部署完成后,使用自定义域配置您的门户,如以下步骤 4 所述

门户配置

使用 AWS 控制台、 UpdatePortal API 或 update-portal AWS CLI 命令将您的自定义域注册为门户设置属性。

  1. 打开 WorkSpaces 安全浏览器控制台,网址为https://console.aws.amazon.com/workspaces-web/home

  2. 在导航窗格中,选择 Web 门户

  3. 选择要配置的 Web 门户,然后选择编辑

  4. 在门户设置中,添加您的自定义域名。

  5. 保存门户配置。

测试您的配置

要测试您的配置,请执行以下步骤:

  1. 打开 Web 浏览器并导航到您的自定义域名的 URL(例如https://myportal.example.com)。

  2. 如果一切设置正确,您应该会看到门户的登录页面。

  3. 接下来,在浏览器中输入门户 URL,您应该在登录 IdP 后被重定向到自定义域。

  4. 最后,登录您的 IdP,然后单击门户的应用程序图块。您应该被重定向到自定义域。