bg-tutorials

如何在 Google App Engine 上安装 SSL 证书

本指南将向您展示如何在 Google App Engine 上安装 SSL 证书,包括现代方式(App Engine 会为任何自定义域名自动配置和续订的免费 Google 托管证书)和传统方式(当您需要特定的 CA、EV/OV 证书或通配符证书时,上传您自己的第三方证书)。App Engine 是一个完全托管的 PaaS,因此所有这些操作都在 Google Cloud Console 或通过 gcloud CLI 完成;您永远不需要登录服务器。

先决条件

在安装证书之前,请确保以下条件已经具备:

  • Google Cloud 项目中已部署的 App Engine 应用程序(标准或灵活环境)。
  • 一个您控制的已注册域名,并有权访问其 DNS 记录。
  • 已通过Google Search Console或Webmaster Central为您的 Google 账户验证该域名(App Engine 会从那里读取已验证的所有权信息)。
  • 如果您更喜欢命令行而非 Console,需要安装并验证gcloud CLI。
  • 项目中的所有者、编辑者或 App Engine 管理员角色。

App Engine 上的自定义域名和 SSL 按以下顺序操作:验证域名,将其映射到您的应用程序,将 DNS 指向 App Engine,然后让 Google 配置托管证书或上传您自己的证书。

选项 1:免费 Google 托管 SSL(推荐)

Google 托管证书是免费的,通过 Let’s Encrypt 自动配置,只要域名保持映射状态,就会自动续订。这是 App Engine 上任何新自定义域名的默认设置,也是绝大多数网站的正确选择。托管证书不支持通配符:每个主机名(例如example.com和www.example.com)都由其自己的证书覆盖。

步骤 1:验证您的域名所有权

在浏览器中,使用拥有该 Cloud 项目的相同 Google 账户登录Google Search Console,将您的域名添加为一个资源,并完成一种验证方法(DNS TXT 记录是最可靠的方式)。App Engine 不会让您映射一个尚未验证的域名。

步骤 2:在 Console 中映射自定义域名

  • 打开Google Cloud Console并选择您的项目。
  • 从导航菜单中选择App Engine > Settings。
  • 打开Custom Domains选项卡,点击Add a custom domain。
  • 从下拉列表中选择已验证的域名,然后输入您想要提供服务的子域名(通常是根域名example.com和www.example.com)。
  • 点击Save mappings,然后按照屏幕上的说明在您的 DNS 提供商处添加建议的A、AAAA和CNAME记录。

要通过命令行执行相同的操作,请运行:

gcloud app domain-mappings create www.example.com --project=YOUR_PROJECT_ID
gcloud app domain-mappings create example.com --project=YOUR_PROJECT_ID

步骤 3:等待托管证书生效

一旦 DNS 传播完成,App Engine 会自动为每个映射的主机名请求 Let’s Encrypt 证书。配置通常很快,但 DNS 传播可能需要长达 24 小时。使用以下命令检查状态:

gcloud app domain-mappings list --project=YOUR_PROJECT_ID

当证书生效时,每个映射会显示 SSL 状态为MANAGED_CERTIFICATE_STATUS: OK。在证书发放过程中,您会看到PROVISIONING或PENDING_DNS;一旦 DNS 记录解析到 Google IP,这种状态通常会自动消失。

步骤 4:为访问者强制启用 HTTPS(标准环境)

在 App Engine 标准环境中,通过在app.yaml中的每个处理程序中添加secure: always,将每个请求重定向到 HTTPS:

handlers:
- url: /.*
  script: auto
  secure: always
  redirect_http_response_code: 301

使用 gcloud app deploy 部署更改。在灵活环境中,需要在应用程序或负载均衡器层面处理 HTTP 到 HTTPS 的重定向。

选项 2:上传您自己的第三方 SSL 证书

当您需要通配符证书、来自特定证书颁发机构的 OV 或 EV 证书,或者已经为您的域名颁发的证书时,请选择此方式。App Engine 接受一个包含叶证书和任何中间证书的单个 PEM 文件,以及一个未加密的 PEM 编码 RSA 私钥。上传的 PEM 文件中最多允许五个证书(一个叶证书加最多四个中间证书),并且上传的证书可以在同一 Cloud 组织中的多个项目之间重复使用。

步骤 1:生成 CSR 并订购证书

如果您已经生成了 CSR 并从您的 CA 收到了颁发的证书,请直接跳到步骤 2。

CSR(证书签名请求)是一段包含您的联系信息和域名数据的编码文本,CA 使用它来验证并签署您的证书。您有两种方法来创建它:

在下单时向 CA 提交 CSR(包括—–BEGIN CERTIFICATE REQUEST—–和—–END CERTIFICATE REQUEST—–标记)。将匹配的私钥保存在安全的位置;安装时您将需要它。

步骤 2:将证书和证书链合并为单个 PEM 文件

如果 CA 提供了单独的文件(您的服务器证书加一个或多个中间证书),请按正确的顺序将它们连接起来(先是您的证书,然后是中间证书)。在存放这些文件的文件夹中打开终端并运行:

cat yourdomain.crt intermediate.crt > concat.crt

在 Windows PowerShell 中,等效命令为:

Get-Content yourdomain.crt, intermediate.crt | Set-Content concat.crt

结果是一个包含完整证书链的PEM 编码证书文件。如果您还需要转换格式(例如从.pfx或.p12转换为 PEM),可以使用我们的SSL 工具。

私钥必须是未加密的 PEM 编码 RSA 密钥(例如myserver.key.pem)。如果您的私钥受密码保护,请使用以下命令去除密码短语:

openssl rsa -in encrypted.key -out myserver.key.pem

步骤 3:在 Cloud Console 中上传证书

  • 打开Google Cloud Console并选择您的项目。
  • 进入导航菜单 > App Engine > Settings,然后打开SSL Certificates选项卡。
  • 点击Upload a new certificate。
  • 为证书起一个Name,然后在PEM encoded X.509 public key certificate下上传concat.crt,在Unencrypted PEM encoded RSA private key下上传myserver.key.pem。
  • 点击Upload。

步骤 4:将证书分配给您的域名

在证书的详情页面上,选择您想要保护的自定义域名,然后点击Save。如果某个域名当前正在使用 Google 托管证书,请先为其禁用托管模式;否则上传的证书将无法应用。

步骤 5(可选):通过 gcloud CLI 上传并绑定

通过命令行执行相同的操作:

gcloud app ssl-certificates create 
  --display-name="example.com 2026" 
  --certificate=concat.crt 
  --private-key=myserver.key.pem

该命令会返回新证书的 ID。将其绑定到映射的域名,并为该映射关闭托管模式:

gcloud app domain-mappings update www.example.com 
  --certificate-id=CERT_ID 
  --certificate-management=manual

如果之后要切换回免费的 Google 托管证书,请运行:

gcloud app domain-mappings update www.example.com 
  --certificate-management=automatic

注意事项和限制

  • 托管证书不支持通配符。对于*.example.com,请按照选项 2 上传通配符证书。
  • Let’s Encrypt 限制每个基础域名每周最多颁发 50 个托管证书。这一限制很少成为问题,但如果您一次映射许多子域名,就需要注意这一点。
  • 未分配给任何域名的上传证书会在 30 天后自动删除。
  • 单个上传的 PEM 文件中最多允许一个叶证书加四个中间证书。
  • 上传的证书在您 Cloud 组织中的所有项目之间可见,因此单个通配符证书可以重复使用。

测试 SSL 安装

通过https://打开您的网站并确认锁形图标,然后使用我们的SSL Checker运行更深入的扫描,即时获取有关证书、证书链和协议支持的报告。

常见问题

App Engine 是否提供免费的 SSL 证书?

是的。一旦您将已验证的自定义域名映射到您的 App Engine 应用程序并将 DNS 指向 Google,App Engine 会自动通过 Let’s Encrypt 为您配置一个免费的 SSL 证书,并为您续订。您不需要为此付费,也不需要上传任何内容。

我可以在 App Engine 上使用通配符证书吗?

免费的 Google 托管证书不支持通配符。要保护*.example.com,请购买一个通配符证书,将叶证书和中间证书合并为一个单一的 PEM 文件,然后在App Engine > Settings > SSL Certificates(上文的选项 2)下上传它。

为什么我的自定义域名显示”managed certificate pending”?

在您的域名 DNS 记录解析到创建映射时提供的 Google IP 之前,App Engine 无法颁发 Let’s Encrypt 证书。请验证A、AAAA和CNAME记录是否与Custom Domains下显示的值一致,然后等待 DNS 传播,这可能需要长达 24 小时。运行 gcloud app domain-mappings list 重新检查状态。

如何在 App Engine 上将 HTTP 重定向到 HTTPS?

在标准环境中,在app.yaml中的每个处理程序中添加secure: always(可选加上redirect_http_response_code: 301),然后使用 gcloud app deploy 重新部署。在灵活环境中,请在应用程序或负载均衡器层面执行重定向。

我需要自己续订证书吗?

只有在您上传了自己的证书时才需要。只要域名仍处于映射状态且 DNS 仍解析到 App Engine,Google 托管证书就会自动续订。上传的第三方证书会在 CA 设定的日期过期(目前公共 TLS 证书最长约为一年),因此您必须在该日期之前重复上传和分配步骤。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.