管理 SSL/TLS 证书

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

管理客户端证书

按照以下过程在 Cloud SQL 中管理客户端证书。

检索客户端证书

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

控制台

  1. 在 Google Cloud 控制台中,转到 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 控制台中,转到 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 响应:

管理服务器 CA 证书(每个实例 CA)

本部分介绍了如何管理 Cloud SQL 在内部创建的服务器 CA 证书。这是 Cloud SQL 中的默认服务器 CA 模式。在此证书授权机构层次结构中,Cloud SQL 会为每个实例创建一个服务器 CA。

轮替服务器 CA 证书

如果您收到了一封有关证书失效的通知,或者您想要发起轮替,请按照以下步骤操作,以完成轮替。在开始轮替之前,您必须在实例上拥有新的服务器 CA。如果已创建新的服务器 CA,则可以跳过以下过程的第一步。

  1. 创建新的服务器 CA。
  2. 下载新服务器 CA 证书的信息。
  3. 更新客户端以使用新服务器 CA 证书的信息。
  4. 完成轮替,以将有效证书转入“上一个”空档,并将新添加的证书更新为有效证书。

控制台

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

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择连接
  4. 选择安全标签页。
  5. 点击展开管理证书
  6. 选择轮替 CA 证书

    如果没有符合条件的证书,则轮替选项不可用。

  7. 点击下载证书

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

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

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

  1. 返回安全标签页。
  2. 点击展开管理证书
  3. 选择轮替 CA 证书
  4. 确认您的客户端连接正确。

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

gcloud

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

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

REST v1

  1. 下载服务器 CA 证书:

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

    • 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. 下载服务器 CA 证书:

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

    • 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 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择连接
  4. 选择安全标签页。
  5. 点击展开管理证书
  6. 选择回滚 CA 证书

    如果没有符合条件的证书,则回滚选项不可用。否则,回滚操作会在几秒钟后完成。

gcloud

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

REST v1

  1. 下载服务器 CA 证书:

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

    • 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. 下载服务器 CA 证书:

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

    • 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 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择连接
  4. 选择安全标签页。
  5. 点击创建新的 CA 证书
  6. 点击展开管理证书
  7. 选择轮替 CA 证书

    如果没有符合条件的证书,则轮替选项不可用。

  8. 按照轮替服务器 CA 证书中所述完成轮替。

gcloud

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

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. 按照轮替服务器 CA 证书中所述完成轮替。

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. 按照轮替服务器 CA 证书中所述完成轮替。

获取有关服务器 CA 证书的信息

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

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择连接
  4. 选择安全标签页。

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

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

gcloud

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

REST v1

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

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

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

HTTP 方法和网址:

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

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

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

REST v1beta4

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

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

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

HTTP 方法和网址:

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

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

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

查看 CA 证书的内容

您可以使用 openssl storeutl 查看 CA 证书的内容。

运行 beta sql ssl server-ca-certs list 命令时,您可能会从之前的轮替相关操作中获取多个 CA 证书。

gcloud

  1. 运行以下命令:
    gcloud beta sql ssl server-ca-certs list \
      --instance=INSTANCE_NAME \
      --format='value(cert)' > temp_cert.pem

    INSTANCE_NAME 替换为实例名称。

  2. 使用 openssl 检查 CA 证书的内容。
  3. openssl storeutl -noout -text temp_cert.pem
       

查看服务器证书的内容

您可以使用 openssl s_client 查看服务器证书的内容。

gcloud

如需查看服务器证书内容,请运行以下命令:

openssl s_client -starttls postgres -connect INSTANCE_IP_ADDRESS:5432

INSTANCE_IP_ADDRESS 替换为实例的 IP 地址。

管理服务器证书(共享 CA)

本部分介绍了如何在使用共享 CA 的实例上管理服务器证书。您可以选择将共享 CA 用作实例的服务器 CA 模式,方法是在创建实例时为 serverCaMode 设置(Cloud SQL Admin API)或 --server-ca-mode 标志(gcloud CLI)指定 GOOGLE_MANAGED_CAS_CA

轮替服务器证书

如果您收到了一封有关证书失效的通知,或者您想要发起轮替,请按照以下步骤操作,以完成轮替。在开始轮替之前,必须为即将进行的轮替创建新的服务器证书。如果已为即将进行的轮替创建新的服务器证书,则可以跳过以下过程的第一步。

如需轮替实例上的服务器证书,请执行以下步骤:

  1. 如果您需要新的服务器证书,请创建一个。

  2. 如果您的客户端已信任根 CA,则此步骤是可选的。但是,如果您需要使用服务器 CA 信息更新客户端,请执行以下操作:

    1. 下载最新的服务器 CA 信息。
    2. 更新客户端以使用最新的服务器 CA 信息。
  3. 完成轮替,方法是将有效证书移至上一个空档,并将新证书更新为有效证书。

控制台

预览版期间,您无法使用 Google Cloud 控制台在使用 CA Service 的实例上轮替服务器证书。 请改用 gcloud beta sql ssl server-certs rotate 命令或 Cloud SQL Admin API 命令。

gcloud

  1. 如需创建服务器证书,请使用以下命令:
    gcloud beta sql ssl server-certs create \
    --instance=INSTANCE
  2. INSTANCE 替换为实例名称。
  3. 确保您使用的是最新的 CA 软件包。 如果您使用的不是最新的 CA 软件包,请运行以下命令,将实例的最新服务器 CA 信息下载到本地 PEM 文件:
    gcloud beta sql ssl server-certs list \
    --format="value(ca_cert.cert)" \
    --instance=INSTANCE_NAME > \
    FILE_PATH/server-ca.pem

    或者,从本页上的根 CA 和区域 CA 证书捆绑包表下载 CA 捆绑包。

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

  4. 更新完所有客户端(如果需要客户端更新)后,完成轮替:
    gcloud beta sql ssl server-certs rotate \
    --instance=INSTANCE_NAME
          
  5. 确认您的客户端连接正确。

    如果有任何客户端未使用新轮替的服务器证书进行连接,请回滚到先前的配置。

REST v1

  1. 创建服务器证书。

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

    • PROJECT_ID:项目 ID
    • INSTANCE_ID:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate

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

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

  2. 如果您需要下载服务器 CA 证书信息,可以使用以下命令。

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

    • PROJECT_ID:项目 ID
    • INSTANCE_ID:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates

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

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

  3. 完成轮替。

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

    • PROJECT_ID:项目 ID
    • INSTANCE_ID:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate

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

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

REST v1beta4

  1. 创建服务器证书。

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

    • PROJECT_ID:项目 ID
    • INSTANCE_ID:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addServerCertificate

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

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

  2. 如果您需要下载服务器 CA 证书信息,可以使用以下命令。

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

    • PROJECT_ID:项目 ID
    • INSTANCE_ID:实例 ID

    HTTP 方法和网址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/listServerCertificates

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

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

  3. 完成轮替。

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

    • PROJECT_ID:项目 ID
    • INSTANCE_ID:实例 ID

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateServerCertificate

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

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

回滚证书轮替

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

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

控制台

预览版期间,您无法使用 Google Cloud 控制台在使用 CA Service 的实例上回滚服务器证书。请改用 gcloud beta sql ssl server-certs rollback 命令或 Cloud SQL Admin API 命令。

gcloud

gcloud beta sql ssl server-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/listServerCertificates

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

    您应该收到类似以下内容的 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/rotateServerCertificate

    请求 JSON 正文:

    {
      "rotateServerCertificateContext": {"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/listServerCertificates

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

    您应该收到类似以下内容的 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/rotateServerCertificate

    请求 JSON 正文:

    {
      "rotateServerCertificateContext": {"nextVersion": "sha1Fingerprint"}
    }
    

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

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

查看 CA 证书的内容

您可以使用 openssl storeutl 实用程序查看 CA 证书的内容。

由于信任链,当您运行 beta sql ssl server-certs list 命令时,始终会获得多个 CA 证书。您还可能会从之前的轮替相关操作中获取多个 CA 证书。

gcloud

  1. 运行以下命令:
    gcloud beta sql ssl server-certs list \
      --instance=INSTANCE_NAME \
      --format='value(cert)' > temp_cert.pem

    INSTANCE_NAME 替换为实例名称。

  2. 使用 openssl 检查 CA 证书的内容。
  3. openssl storeutl -noout -text temp_cert.pem
       

查看服务器证书的内容

您可以使用 openssl 实用程序和 beta sql ssl server-certs list 命令查看服务器证书的内容。

由于信任链,您在运行 gcloud CLI 命令时始终会获得多个 CA 证书。您还可能会从之前的轮替相关操作中获取多个 CA 证书。

gcloud

仅使用 openssl s_client

openssl s_client -starttls postgres -connect INSTANCE_IP_ADDRESS:5432

INSTANCE_IP_ADDRESS 替换为实例的 IP 地址。

使用 gcloud CLIopenssl storeutl

  1. 运行以下命令:
    gcloud beta sql ssl server-certs list \
      --instance=INSTANCE_NAME \
      --format='value(ssl_cert.cert)' > temp_cert.pem

    INSTANCE_NAME 替换为实例名称。

  2. 使用 openssl 检查服务器证书的内容。
  3. openssl storeutl -noout -text temp_cert.pem
       

下载根 CA 和区域性 CA 证书捆绑包

您可以从下表下载根 CA 和区域 CA 证书捆绑包。

区域名称 位置 证书软件包
全球
适用于所有区域的 CA 所有位置 global.pem
亚洲
asia-east1 台湾 asia-east1.pem
asia-east2 香港 asia-east2.pem
asia-northeast1 东京 asia-northeast1.pem
asia-northeast2 大阪 asia-northeast2.pem
asia-northeast3 首尔 asia-northeast3.pem
asia-south1 孟买 asia-south1.pem
asia-south2 德里 asia-south2.pem
asia-southeast1 新加坡 asia-southeast1.pem
asia-southeast2 雅加达 asia-southeast2.pem
非洲
africa-south1 约翰内斯堡 africa-south1.pem
澳大利亚
australia-southeast1 悉尼 australia-southeast1.pem
australia-southeast2 墨尔本 australia-southeast2.pem
欧洲
europe-central2 华沙 europe-central2.pem
europe-north1 芬兰 europe-north1.pem
europe-southwest1 马德里 europe-southwest1.pem
europe-west1 比利时 europe-west1.pem
europe-west2 伦敦 europe-west2.pem
europe-west3 法兰克福 europe-west3.pem
europe-west4 荷兰 europe-west4.pem
europe-west6 苏黎世 europe-west6.pem
europe-west8 米兰 europe-west8.pem
europe-west9 巴黎 europe-west9.pem
europe-west10 柏林 europe-west10.pem
europe-west12 都灵 europe-west12.pem
中东
me-central1 多哈 me-central1.pem
me-central2 达曼 me-central2.pem
me-west1 特拉维夫 me-west1.pem
北美洲
northamerica-northeast1 蒙特利尔 northamerica-northeast1.pem
northamerica-northeast2 多伦多 northamerica-northeast2.pem
northamerica-south1 墨西哥 northamerica-south1.pem
us-central1 爱荷华 us-central1.pem
us-east1 南卡罗来纳 us-east1.pem
us-east4 北弗吉尼亚 us-east4.pem
us-east5 哥伦布 us-east5.pem
us-south1 达拉斯 us-south1.pem
us-west1 俄勒冈 us-west1.pem
us-west2 洛杉矶 us-west2.pem
us-west3 盐湖城 us-west3.pem
us-west4 拉斯维加斯 us-west4.pem
南美洲
southamerica-east1 圣保罗 southamerica-east1.pem
southamerica-west1 圣地亚哥 southamerica-west1.pem

重置 SSL/TLS 配置

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

控制台

  1. 在 Google Cloud 控制台中,转到 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. 新建客户端证书

后续步骤