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 메서드 및 URL:

    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 메서드 및 URL:

    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 메서드 및 URL:

    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 메서드 및 URL:

    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 메서드 및 URL:

    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 메서드 및 URL:

    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 메서드 및 URL:

    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 메서드 및 URL:

    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 파일을 대체하여 모든 MySQL 클라이언트에서 새 정보를 사용하도록 업데이트합니다.

클라이언트를 업데이트한 후 순환을 완료합니다.

  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 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 순환을 완료합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    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 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 순환을 완료합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    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 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 롤백하려는 버전의 sha1Fingerprint 필드를 복사합니다.

    activeVersion으로 표시되는 sha1Fingerprint 값을 포함한 버전의 바로 이전 버전(createTime 값 포함)을 찾습니다.

  3. 순환을 롤백합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    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 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 롤백하려는 버전의 sha1Fingerprint 필드를 복사합니다.

    activeVersion으로 표시되는 sha1Fingerprint 값을 포함한 버전의 바로 이전 버전(createTime 값 포함)을 찾습니다.

  3. 순환을 롤백합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

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

    JSON 요청 본문:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

순환 시작

Cloud SQL의 이메일을 기다렸다가 순환을 시작할 필요는 없습니다. 언제든지 순환을 시작해도 됩니다. 순환을 시작하면 새 인증서가 생성되어 '예정' 슬롯에 배치됩니다. 요청 시점에 인증서가 '예정' 슬롯에 이미 있는 경우 해당 인증서는 삭제됩니다. 예정된 인증서는 1개만 있을 수 있습니다.

순환을 시작하려면 다음 안내를 따르세요.

콘솔

  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 메서드 및 URL:

    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 메서드 및 URL:

    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 메서드 및 URL:

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 메서드 및 URL:

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 mysql -connect INSTANCE_IP_ADDRESS:3306

INSTANCE_IP_ADDRESS를 인스턴스의 IP 주소로 바꿉니다.

서버 인증서 관리 (공유 CA)

이 섹션에서는 공유 CA를 사용하는 인스턴스에서 서버 인증서를 관리하는 방법을 설명합니다. 인스턴스를 만들 때 serverCaMode 설정 (Cloud SQL Admin API)에 GOOGLE_MANAGED_CAS_CA를 지정하거나 --server-ca-mode 플래그 (gcloud CLI)를 지정하여 공유 CA를 인스턴스의 서버 CA 모드로 사용하도록 선택할 수 있습니다.

서버 인증서 순환

인증서 만료에 관한 알림을 받았거나 순환을 시작하려면 다음 단계에 따라 순환을 완료하세요. 순환을 시작하기 전에 예정된 순환을 위해 새 서버 인증서가 생성되어 있어야 합니다. 예정된 순환을 위해 이미 새 서버 인증서가 생성된 경우 다음 절차의 첫 번째 단계를 건너뛰어도 됩니다.

인스턴스에서 서버 인증서를 순환하려면 다음 단계를 따르세요.

  1. 새 서버 인증서가 필요한 경우 인증서를 만듭니다.

  2. 클라이언트가 이미 루트 CA를 신뢰하는 경우 이 단계는 선택사항입니다. 그러나 서버 CA 정보로 클라이언트를 업데이트해야 하는 경우 다음을 실행합니다.

    1. 최신 서버 CA 정보를 다운로드합니다.
    2. 최신 서버 CA 정보를 사용하도록 클라이언트를 업데이트합니다.
  3. 활성 인증서를 이전 슬롯으로 이동하고 새 인증서를 활성 인증서로 업데이트하여 순환을 완료합니다.

콘솔

미리보기 기간에는 Google Cloud 콘솔을 사용하여 CA 서비스를 사용하는 인스턴스의 서버 인증서를 순환할 수 없습니다. 대신 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 번들을 다운로드합니다.

    그런 다음 다운로드한 파일을 클라이언트 호스트 머신에 복사하고 기존 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 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 서버 CA 인증서 정보를 다운로드해야 하는 경우 다음 명령어를 사용하면 됩니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • INSTANCE_ID: 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  3. 순환을 완료합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • INSTANCE_ID: 인스턴스 ID

    HTTP 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

REST v1beta4

  1. 서버 인증서를 만듭니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • INSTANCE_ID: 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 서버 CA 인증서 정보를 다운로드해야 하는 경우 다음 명령어를 사용하면 됩니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • INSTANCE_ID: 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  3. 순환을 완료합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • INSTANCE_ID: 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

인증서 순환 롤백

서버 인증서 순환을 완료하고 나면 모든 클라이언트가 새 인증서를 사용하여 Cloud SQL 인스턴스에 연결해야 합니다. 클라이언트가 새 인증서 정보를 사용하도록 올바르게 업데이트되지 않으면 SSL/TLS를 사용하여 인스턴스에 연결할 수 없습니다. 이러한 경우에는 이전 인증서 구성으로 롤백할 수 있습니다.

롤백 작업은 활성 인증서를 '예정' 슬롯으로 이동하여 '예정' 인증서를 대체합니다. '이전' 인증서가 활성 인증서가 되고, 인증서 구성이 순환이 완료되기 이전의 상태로 돌아갑니다.

콘솔

미리보기 기간에는 Google Cloud 콘솔을 사용하여 CA 서비스를 사용하는 인스턴스의 서버 인증서를 롤백할 수 없습니다. 대신 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 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 롤백하려는 버전의 sha1Fingerprint 필드를 복사합니다.

    activeVersion으로 표시되는 sha1Fingerprint 값을 포함한 버전의 바로 이전 버전(createTime 값 포함)을 찾습니다.

  3. 순환을 롤백합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • INSTANCE_ID: 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

    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 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 롤백하려는 버전의 sha1Fingerprint 필드를 복사합니다.

    activeVersion으로 표시되는 sha1Fingerprint 값을 포함한 버전의 바로 이전 버전(createTime 값 포함)을 찾습니다.

  3. 순환을 롤백합니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • INSTANCE_ID: 인스턴스 ID입니다.

    HTTP 메서드 및 URL:

    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 mysql -connect INSTANCE_IP_ADDRESS:3306

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 모든 위치 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. gcloud sql instances restart INSTANCE_NAME
  3. 새 클라이언트 인증서를 만듭니다.

REST v1beta4

  1. 인증서를 새로 고칩니다.

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

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

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 비슷한 JSON 응답이 표시됩니다.

  2. 새 클라이언트 인증서를 만듭니다.

다음 단계