SSL/TLS 인증서 관리

이 페이지에서는 클라이언트 인증서와 서버 인증서를 관리하는 방법을 설명합니다.

클라이언트 인증서 관리

클라이언트 인증서 검색

클라이언트 인증서의 공개 키 부분을 검색할 수 있습니다. 그러나 비공개 키는 검색할 수 없습니다. 비공개 키를 분실할 경우 새 인증서를 만들어야 합니다.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 클라이언트 인증서 구성 섹션까지 아래로 스크롤합니다.
  5. 인증서 이름을 클릭합니다. 그러면 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

  1. 인스턴스의 인증서를 나열하여 검색하려는 인증서의 디지털 지문을 가져옵니다.

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

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

    HTTP 메서드 및 URL:

    GET https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

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

    다음과 유사한 JSON 응답이 표시됩니다.

  3. 따옴표로 묶인 인증서 데이터를 모두 파일(예: client-cert.pem)에 복사합니다. 따옴표는 복사하지 마세요.

클라이언트 인증서 삭제

Console(2세대)

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 클라이언트 인증서 구성 섹션까지 아래로 스크롤합니다.
  5. 삭제할 인증서를 찾고 삭제을 클릭합니다.
  6. 클라이언트 인증서 삭제 대화상자에서 확인을 클릭합니다.

Console(1세대)

이 태스크를 수행하면 Cloud SQL 인스턴스를 다시 시작해야 합니다.

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 클라이언트 인증서 구성 섹션까지 아래로 스크롤하여 삭제할 인증서를 찾고 삭제(삭제)를 클릭합니다.
  5. 클라이언트 인증서 삭제 대화상자에서 지금 다시 시작을 클릭합니다.

    작업을 완료하려면 인스턴스를 다시 시작해야 합니다.

gcloud

1세대 인스턴스의 경우 Cloud SQL 인스턴스를 다시 시작해야 이 작업이 완료됩니다.

  1. ssl client-certs delete 명령어를 사용하여 클라이언트 인증서를 삭제합니다.

    gcloud sql ssl client-certs delete [CERT_NAME] --instance=[INSTANCE_NAME]
    
  2. 1세대 인스턴스의 경우 인스턴스를 다시 시작합니다.

    gcloud sql instances restart [INSTANCE_NAME]
    

REST

1세대 인스턴스의 경우 Cloud SQL 인스턴스를 다시 시작해야 이 태스크가 완료됩니다.

  1. 인스턴스의 인증서를 나열하여 삭제하려는 인증서의 디지털 지문을 가져옵니다.

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

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

    HTTP 메서드 및 URL:

    GET https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts/sha1FingerPrint

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

    다음과 유사한 JSON 응답이 표시됩니다.

  3. 1세대 인스턴스의 경우 인스턴스를 다시 시작합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • activation-policy: 활성화 정책은 ALWAYS 또는 NEVER입니다.

    HTTP 메서드 및 URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart

    JSON 요청 본문:

    {
      "settings": {
        "activationPolicy": "activation-policy"
      }
    }
    

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

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

    {
      "kind": "sql#operation",
      "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-20T21:30:35.667Z",
      "operationType": "RESTART",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    

서버 인증서 관리

서버 인증서 순환

인증서 만료에 관한 알림을 받았거나 순환을 시작했다면 다음 단계를 수행하여 순환을 완료해야 합니다.

  1. 새 서버 인증서 정보를 다운로드합니다.
  2. 새 서버 인증서 정보를 사용하도록 클라이언트를 업데이트합니다.
  3. 순환을 완료합니다. 그러면 현재 활성화된 인증서가 '이전' 슬롯으로 이동하고 새로 추가된 인증서가 활성 인증서로 업데이트됩니다.

Console

새 서버 인증서 정보를 다운로드합니다.

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.
    Cloud SQL 인스턴스 페이지로 이동
  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 서버 인증서 구성 섹션까지 아래로 스크롤합니다.
  5. 새 인증서 만들기를 클릭합니다.
  6. SSL 서버 인증서 다운로드 섹션까지 아래로 스크롤합니다.
  7. 다운로드를 클릭합니다.

PEM 파일로 인코딩된 서버 인증서 정보가 표시되고 이 파일을 로컬 환경에 다운로드할 수 있습니다.

  • 다운로드한 파일을 클라이언트 호스트 머신에 복사하고 기존 server-ca.pem 파일을 대체하여 모든 MySQL 클라이언트에서 새 정보를 사용하도록 업데이트합니다.

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

  1. SSL 서버 인증서 구성 섹션으로 돌아갑니다.
  2. 인증서 순환을 클릭합니다.
  3. 클라이언트가 올바르게 연결되는지 확인합니다.
  4. 클라이언트가 새로 순환된 인증서를 통해 연결되지 않으면 인증서 롤백을 클릭하여 이전 구성으로 롤백할 수 있습니다.

gcloud

  1. 인증서 정보를 로컬 PEM 파일로 다운로드합니다.
    gcloud beta sql ssl server-ca-certs list --format="value(cert)" \
    --instance=[INSTANCE_NAME] > [FILE_PATH]/[FILE_NAME].pem
  2. 다운로드된 파일을 클라이언트 호스트 머신에 복사하고 기존 server-ca.pem 파일을 대체하여 모든 클라이언트에서 새 정보를 사용하도록 업데이트합니다.
  3. 클라이언트를 업데이트한 후 순환을 완료합니다.
            gcloud beta sql ssl server-ca-certs rotate --instance=[INSTANCE_NAME]
          
  4. 클라이언트가 올바르게 연결되는지 확인합니다.

    클라이언트가 새로 순환된 인증서를 통해 연결되지 않는 경우 이전 구성으로 롤백할 수 있습니다.

REST

  1. 서버 인증서를 다운로드합니다.

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

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

    HTTP 메서드 및 URL:

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

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

    다음과 유사한 JSON 응답이 표시됩니다.

  2. 순환을 완료합니다.

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

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

    HTTP 메서드 및 URL:

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

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

    다음과 유사한 JSON 응답이 표시됩니다.

인증서 순환 작업 롤백

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

롤백 작업은 현재 활성화된 인증서를 '예정' 슬롯으로 옮깁니다(현재의 '예정' 인증서를 대체함). '이전' 인증서가 현재 활성 인증서가 되고, 인증서 구성이 순환이 완료되기 이전의 상태로 돌아갑니다.

이전 인증서 구성으로 롤백하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.
    Cloud SQL 인스턴스 페이지로 이동
  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 서버 인증서 구성 섹션까지 아래로 스크롤합니다.
  5. 인증서 순환을 클릭합니다. 작업이 완료되는 데 몇 초 정도 걸립니다.
  6. 인증서 롤백을 클릭합니다.

gcloud

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

REST

  1. 서버 인증서를 다운로드합니다.

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

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

    HTTP 메서드 및 URL:

    GET https://www.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://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/rotateServerCa

    JSON 요청 본문:

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

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

    다음과 유사한 JSON 응답이 표시됩니다.

순환 시작

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

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

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.
    Cloud SQL 인스턴스 페이지로 이동
  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 서버 인증서 구성 섹션까지 아래로 스크롤합니다.
  5. 새 인증서 만들기를 클릭합니다.
  6. 서버 인증서 순환의 설명에 따라 순환을 완료합니다.

gcloud

  1. 순환을 시작합니다.
         gcloud beta sql ssl server-ca-certs create --instance=[INSTANCE_NAME]
         
  2. 서버 인증서 순환의 설명에 따라 순환을 완료합니다.

REST

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

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

    HTTP 메서드 및 URL:

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

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

    다음과 유사한 JSON 응답이 표시됩니다.

  2. 서버 인증서 순환의 설명에 따라 순환을 완료합니다.

서버 인증서에 대한 정보 가져오기

서버 인증서가 만료되는 시기, 서버 인증서가 제공하는 암호화 수준과 같은 서버 인증서 관련 정보를 확인할 수 있습니다.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 서버 인증서 구성 섹션까지 아래로 스크롤합니다.

    표에서 서버 인증서의 만료일을 확인할 수 있습니다.

    인증서 유형을 확인하려면 gcloud beta sql ssl server-ca-certs list --instance=[INSTANCE_NAME] 명령어를 실행합니다.

gcloud

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

REST

인스턴스를 설명하면 서버 인증서에 관한 세부정보를 확인할 수 있습니다.

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

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

HTTP 메서드 및 URL:

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

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

다음과 유사한 JSON 응답이 표시됩니다.

SSL/TLS 구성 재설정

SSL/TLS 구성을 완전히 재설정할 수 있습니다.

gcloud

1세대 인스턴스의 경우 Cloud SQL 인스턴스를 다시 시작해야 이 작업이 완료됩니다.

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

    gcloud sql instances reset-ssl-config [INSTANCE_NAME]
    
  2. 1세대 인스턴스의 경우 인스턴스를 다시 시작하여 새로고침을 완료합니다.

    gcloud sql instances restart [INSTANCE_NAME]
    
  3. 새 클라이언트 인증서를 만듭니다.

REST

1세대 인스턴스의 경우 Cloud SQL 인스턴스를 다시 시작해야 이 태스크가 완료됩니다.

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

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

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

    HTTP 메서드 및 URL:

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

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

    다음과 유사한 JSON 응답이 표시됩니다.

  2. 1세대 인스턴스의 경우 인스턴스를 다시 시작합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • activation-policy: 활성화 정책은 ALWAYS 또는 NEVER입니다.

    HTTP 메서드 및 URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart

    JSON 요청 본문:

    {
      "settings": {
        "activationPolicy": "activation-policy"
      }
    }
    

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

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

    {
      "kind": "sql#operation",
      "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-20T21:30:35.667Z",
      "operationType": "RESTART",
      "name": "operation-id",
      "targetId": "instance-id",
      "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
      "targetProject": "project-id"
    }
    
  3. 새 클라이언트 인증서를 만듭니다.

다음 단계