管理 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. 完成轮替,以将有效证书转入“上一个”空档,并将新添加的证书更新为有效证书。

控制台

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

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

    转到“Cloud SQL 实例”

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

    如果没有符合条件的证书,则轮替选项不可用。 您必须创建新的服务器 CA 证书

  7. 点击下载证书

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

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

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

gcloud

  1. 创建服务器 CA 证书:
    gcloud 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. 确认您的客户端连接正确。
  6. 如果有任何客户端未使用新轮替的证书进行连接,您可以回滚到先前的配置。

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 响应:

如果您在尝试变换证书时收到错误 No upcoming/previous Server CA Certificate exists,请验证您在使用单实例 CA 层次结构的实例上运行该命令。您可以使用 gcloud sql instances describe 命令查看 Cloud SQL 实例配置了哪个 CA 层次结构。如需了解详情,请参阅查看实例信息

回滚证书轮替操作

完成证书轮替之后,您的客户端必须全部使用新证书连接到 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 响应:

如果您在尝试回滚证书 CA 变换时收到错误 No upcoming/previous Server CA Certificate exists,请验证您在使用单实例 CA 层次结构的实例上运行该命令。您可以使用 gcloud sql instances describe 命令查看 Cloud SQL 实例配置了哪个 CA 层次结构。如需了解详情,请参阅查看实例信息

启动轮替

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

如需启动轮替,请执行以下操作:

控制台

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

    转到“Cloud SQL 实例”

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

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

gcloud

  1. 运行以下命令:
    gcloud 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,以选择将共享 CA 用作实例的服务器 CA 模式。

若要将客户管理的 CA 用作实例的服务器 CA 模式,您必须在创建实例时为 serverCaMode 设置 (Cloud SQL Admin API) 或 --server-ca-mode 标志 (gcloud CLI) 指定 CUSTOMER_MANAGED_CAS_CA,并且必须拥有有效的 CA 池和 CA。如需了解详情,请参阅使用客户管理的 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 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 证书集合

如果您使用的是 Google 管理的共享 CA 配置,则可以从下表中下载根 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-north2 斯德哥尔摩 europe-north2.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. 新建客户端证书

后续步骤