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 인증서 순환

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

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

콘솔

새 서버 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 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. 서버 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 beta 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 beta 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 beta sql ssl server-ca-certs list --instance=INSTANCE_NAME 명령어를 실행합니다.

gcloud

gcloud beta 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 응답이 표시됩니다.

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. 새 클라이언트 인증서를 만듭니다.

다음 단계