管理 SSL/TLS 证书

本页面介绍如何管理客户端和服务器证书。

管理客户端证书

检索客户端证书

您可以检索客户端证书的公钥部分,但不能检索私钥。如果私钥丢失,则必须创建一个新证书。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 从 SQL 导航菜单中选择连接
  4. 向下滚动到安全部分。
  5. 管理客户端证书下方,点击证书名称。
  6. 系统将打开 SSL 客户端证书对话框,并显示客户端证书 (client-cert.pem),其中包含下载证书的链接。

gcloud

使用 ssl client-certs describe 命令检索客户端证书公钥:

gcloud sql ssl client-certs describe CERT_NAME \
--instance=INSTANCE_NAME \
--format="value(cert)" > client-cert.pem

REST v1

  1. 列出实例的证书,以获取待检索证书的指纹:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    记录待检索证书的 sha1Fingerprint 字段。不要包含引号。

  2. 检索证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID
    • sha1FingerPrint:证书的 sha1FingerPrint

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  3. 将引号内包含的所有证书数据复制到一个文件中(例如 client-cert.pem)。不要复制引号本身。

REST v1beta4

  1. 列出实例的证书,以获取待检索证书的指纹:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    记录待检索证书的 sha1Fingerprint 字段。不要包含引号。

  2. 检索证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID
    • sha1FingerPrint:证书的 sha1FingerPrint

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  3. 将引号内包含的所有证书数据复制到一个文件中(例如 client-cert.pem)。不要复制引号本身。

删除客户端证书

删除客户端证书后,数据库服务器将会更新,无需重启。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 从 SQL 导航菜单中选择连接
  4. 向下滚动到安全部分。
  5. 管理客户端证书下,找到您要删除的证书,然后点击 删除。
  6. 删除客户端证书对话框中,点击确定

gcloud

使用 ssl client-certs delete 命令删除客户端证书:

gcloud sql ssl client-certs delete CERT_NAME \
--instance=INSTANCE_NAME

REST v1

  1. 列出实例的证书,以获取要删除的证书的指纹:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    记录待删除证书的 sha1Fingerprint 字段。不要包含引号。

  2. 删除证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID
    • sha1FingerPrint:证书的 sha1FingerPrint

    HTTP 方法和网址:

    DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

REST v1beta4

  1. 列出实例的证书,以获取要删除的证书的指纹:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    记录待删除证书的 sha1Fingerprint 字段。不要包含引号。

  2. 删除证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID
    • sha1FingerPrint:证书的 sha1FingerPrint

    HTTP 方法和网址:

    DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

管理服务器证书

轮替服务器证书

如果您收到了一封有关证书失效的通知,或者您已经发起了轮替,那么必须按照以下步骤执行操作,以完成轮替:

  1. 下载新服务器证书的信息。
  2. 更新客户端,改用新服务器证书信息。
  3. 完成轮替,以将当前的有效证书转入“上一个”时隙,并将新添加的证书更新为有效证书。

控制台

下载新服务器证书的信息:

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 从 SQL 导航菜单中选择连接
  4. 向下滚动到安全部分。
  5. 点击展开管理证书
  6. 选择轮替证书

    如果没有符合条件的证书,轮替选项将灰显。

  7. 点击下载证书

编码为 PEM 文件的服务器证书信息将下载到您的本地环境中:

  • 通过将下载的文件复制到客户端主机上并替换现有的 server-ca.pem 文件,将所有 PostgreSQL 客户端更新为使用新信息。

更新完各客户端后,完成轮替:

  1. 返回到安全部分。
  2. 点击展开管理证书
  3. 选择轮替证书
  4. 确认您的客户端连接正确。
  5. 如果有客户端未使用新轮替的证书进行连接,您可以选择回滚证书回滚到先前的配置。

gcloud

  1. 创建服务器证书:
    gcloud beta sql ssl server-ca-certs create \
    --instance=INSTANCE
    
  2. 将证书信息下载到本地 PEM 文件中:
    gcloud beta sql ssl server-ca-certs list \
    --format="value(cert)" \
    --instance=INSTANCE_NAME > \
    FILE_PATH/FILE_NAME.pem
    
  3. 通过将下载的文件复制到客户端主机上并替换现有的 server-ca.pem 文件,将所有客户端更新为使用新信息。
  4. 更新完各客户端后,完成轮替:
    gcloud beta sql ssl server-ca-certs rotate \
    --instance=INSTANCE_NAME
          
  5. 确认您的客户端连接正确。

    如果有客户端未使用新轮替的证书连接,您可以回滚到先前的配置。

REST v1

  1. 下载服务器证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  2. 完成轮替:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

REST v1beta4

  1. 下载服务器证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  2. 完成轮替:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

回滚证书轮替操作

完成证书轮替之后,您的客户端必须全部使用新证书连接到 Cloud SQL 实例。如果客户端未正确更新为使用新证书信息,它们就无法使用 SSL/TLS 连接到您的实例。如果发生这种情况,您可以回滚到先前的证书配置。

回滚操作会将当前有效证书转入“即将生效”时隙(取代当前的任何“即将生效”证书)。“上一个”证书成为当前有效证书,证书配置也会返回到完成轮替之前的状态。

要回滚到先前的证书配置,请按如下所述操作:

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 从 SQL 导航菜单中选择连接
  4. 向下滚动到安全部分。
  5. 点击展开管理证书
  6. 选择回滚证书

    如果没有符合条件的证书,轮替选项呈灰显状态。否则,回滚操作会在几秒钟后完成。

gcloud

gcloud beta sql ssl server-ca-certs rollback \
--instance=INSTANCE_NAME
   

REST v1

  1. 下载服务器证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/listServerCas

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  2. 复制回滚目标版本的 sha1Fingerprint 字段。

    先找出 sha1Fingerprint 值显示为 activeVersion 的版本,然后找到 createTime 值在该版本之前并且间隔最近的那个版本。

  3. 按如下方式回滚轮替:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa

    请求 JSON 正文:

    {
      "rotateServerCaContext": {"nextVersion": "sha1Fingerprint"}
    }
    

    如需发送您的请求,请展开以下选项之一:

    您应该会收到类似以下内容的 JSON 响应:

REST v1beta4

  1. 下载服务器证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/listServerCas

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  2. 复制回滚目标版本的 sha1Fingerprint 字段。

    先找出 sha1Fingerprint 值显示为 activeVersion 的版本,然后找到 createTime 值在该版本之前并且间隔最近的那个版本。

  3. 按如下方式回滚轮替:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa

    请求 JSON 正文:

    {
      "rotateServerCaContext": {"nextVersion": "sha1Fingerprint"}
    }
    

    如需发送您的请求,请展开以下选项之一:

    您应该会收到类似以下内容的 JSON 响应:

启动轮替

您无需等收到 Cloud SQL 发来的电子邮件后再启动轮替, 而是可以随时启动。启动轮替后,系统会创建一个新证书,并将其置于“即将生效”时隙中。如果“即将生效”时隙中已有一个证书,该证书则会被删除;即将生效证书只能有一个。

如需启动轮替,请按如下所述操作:

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 从 SQL 导航菜单中选择连接
  4. 向下滚动到安全部分。
  5. 点击创建新证书
  6. 点击展开管理证书
  7. 选择轮替证书

    如果没有符合条件的证书,轮替选项将灰显。

  8. 按照轮替服务器证书中的说明完成轮替。

gcloud

  1. 启动轮替:
    gcloud beta sql ssl server-ca-certs create \
    --instance=INSTANCE_NAME
         
  2. 按照轮替服务器证书中的说明完成轮替。

REST v1

  1. 在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/rotateServerCa

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  2. 按照轮替服务器证书中的说明完成轮替。

REST v1beta4

  1. 在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  2. 按照轮替服务器证书中的说明完成轮替。

获取服务器证书相关信息

您可以获取有关服务器证书的信息,例如,该证书何时失效或者提供何种加密级别。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 从 SQL 导航菜单中选择连接
  4. 向下滚动到安全部分。

    管理服务器证书下,您可以在表中查看服务器证书的失效日期。

    如需查看证书类型,请使用 gcloud beta sql ssl server-ca-certs list --instance=INSTANCE_NAME 命令。

gcloud

gcloud beta sql ssl server-ca-certs list \
--instance=INSTANCE_NAME

REST v1

在描述实例时,您可以查看有关服务器证书的详细信息:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=serverCaCert

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

REST v1beta4

在描述实例时,您可以查看有关服务器证书的详细信息:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=serverCaCert

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

重置 SSL/TLS 配置

您可以完全重置 SSL/TLS 配置。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击实例名称,打开其概览页面。
  3. 从 SQL 导航菜单中选择连接
  4. 向下滚动到重置 SSL 配置部分。
  5. 点击重置 SSL 配置

gcloud

  1. 刷新证书:

    gcloud sql instances reset-ssl-config INSTANCE_NAME
    
  2. 新建客户端证书

REST v1beta4

  1. 刷新证书:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/resetSslConfig

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

  2. 新建客户端证书

后续步骤