本指南将向您展示如何在 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 使用它来验证并签署您的证书。您有两种方法来创建它:
- 使用我们的CSR 生成器在浏览器中生成 CSR 和私钥。
- 使用 OpenSSL 在本地生成;请参阅如何在 Google App Engine 上生成 CSR。
在下单时向 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 应用程序并将 DNS 指向 Google,App Engine 会自动通过 Let’s Encrypt 为您配置一个免费的 SSL 证书,并为您续订。您不需要为此付费,也不需要上传任何内容。
免费的 Google 托管证书不支持通配符。要保护*.example.com,请购买一个通配符证书,将叶证书和中间证书合并为一个单一的 PEM 文件,然后在App Engine > Settings > SSL Certificates(上文的选项 2)下上传它。
在您的域名 DNS 记录解析到创建映射时提供的 Google IP 之前,App Engine 无法颁发 Let’s Encrypt 证书。请验证A、AAAA和CNAME记录是否与Custom Domains下显示的值一致,然后等待 DNS 传播,这可能需要长达 24 小时。运行 gcloud app domain-mappings list 重新检查状态。
在标准环境中,在app.yaml中的每个处理程序中添加secure: always(可选加上redirect_http_response_code: 301),然后使用 gcloud app deploy 重新部署。在灵活环境中,请在应用程序或负载均衡器层面执行重定向。
只有在您上传了自己的证书时才需要。只要域名仍处于映射状态且 DNS 仍解析到 App Engine,Google 托管证书就会自动续订。上传的第三方证书会在 CA 设定的日期过期(目前公共 TLS 证书最长约为一年),因此您必须在该日期之前重复上传和分配步骤。


