Share via


Azure Database for MySQL 단일 서버에 대한 루트 CA 변경 내용 이해

적용 대상: Azure Database for MySQL - 단일 서버

Important

Azure Database for MySQL 단일 서버는 사용 중지 경로에 있습니다. Azure Database for MySQL 유연한 서버로 업그레이드하는 것이 좋습니다. Azure Database for MySQL - 유연한 서버로 마이그레이션하는 방법에 대한 자세한 내용은 Azure Database for MySQL 단일 서버에 대한 새로운 소식을 참조하세요.

표준 유지 관리 및 보안 모범 사례의 일환으로 Azure Database for MySQL 단일 서버는 2022년 10월부터 루트 인증서 변경이 완료됩니다. 이 문서에서는 변경 내용, 영향을 받는 리소스 및 응용 프로그램이 데이터베이스 서버에 대한 연결을 유지 관리하는 데 필요한 단계에 대한 자세한 정보를 제공합니다.

참고 항목

이 문서는 Azure Database for MySQL - 단일 서버에만 적용됩니다. Azure Database for MySQL - 유연한 서버의 경우 SSL을 통해 통신하는 데 필요한 인증서는 DigiCert Global Root CA입니다.

이 문서에는 Microsoft에서 더 이상 사용하지 않는 용어인 슬레이브라는 용어에 대한 참조가 포함되어 있습니다. 소프트웨어에서 용어가 제거되면 이 문서에서 해당 용어가 제거됩니다.

루트 인증서 업데이트가 필요한 이유는 무엇인가요?

Azure Database for MySQL 사용자는 여기에 있는 미리 정의된 인증서만 사용하여 자신의 MySQL 서버에 연결할 수 있습니다. 그러나 CA(인증 기관) 브라우저 포럼은 최근 CA 공급업체가 비준수로 발급한 여러 인증서에 대한 보고서를 게시했습니다.

업계의 규정 준수 요구 사항에 따라 CA 공급업체는 비준수 CA에 대한 CA 인증서를 해지하여 준수 CA에서 발급한 인증서를 서버에서 사용하도록 요구하기 시작했고, 해당 준수 CA의 CA 인증서로 서명했습니다. Azure Database for MySQL은 이러한 비준수 인증서 중 하나를 사용했으므로 인증서를 준수 버전으로 회전하여 MySQL 서버에 대한 잠재적 위협을 최소화해야 했습니다.

연결을 유지하기 위해 내 클라이언트를 변경해야 하나요?

아래 결합 CA 인증서 만들기에 언급된 단계를 따랐다면 결합 CA 인증서에서 BaltimoreCyberTrustRoot 인증서가 제거되지 않는 한 계속 연결할 수 있습니다. 연결을 유지하려면 추가 공지가 있을 때까지 결합된 CA 인증서에서 BaltimoreCyberTrustRoot를 유지하는 것이 좋습니다.

결합된 CA 인증서 만들기

인증서가 예기치 않게 해지되어 애플리케이션의 가용성이 중단되지 않도록 하거나 해지된 인증서를 업데이트하려면 다음 단계를 사용합니다. 이 아이디어는 현재 인증서와 새 인증서를 결합하는 새 .pem 파일을 만드는 것이며, SSL 인증서 유효성 검사 중에 허용되는 값 중 하나가 사용됩니다. 다음 단계를 참조하세요.

  1. 다음 링크에서 BaltimoreCyberTrustRoot 및 DigiCertGlobalRootG2 루트 CA를 다운로드합니다.

  2. BaltimoreCyberTrustRootDigiCertGlobalRootG2 인증서를 모두 포함하는 결합된 CA 인증서 저장소를 생성합니다.

    • Java(MySQL 커넥터/J) 사용자의 경우 다음을 실행합니다.

      keytool -importcert -alias MySQLServerCACert -file D:\BaltimoreCyberTrustRoot.crt.pem -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias MySQLServerCACert2 -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt
      

      그런 다음, 원래 키 저장소 파일을 새로 생성된 파일로 바꿉니다.

      • System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
      • System.setProperty("javax.net.ssl.trustStorePassword","password");
    • .NET(MySQL 커넥터/NET, MySQLConnector) 사용자의 경우 BaltimoreCyberTrustRootDigiCertGlobalRootG2가 모두 신뢰할 수 있는 루트 인증 기관인 Windows 인증서 저장소에 있는지 확인합니다. 인증서가 없는 경우 누락된 인증서를 가져옵니다.

      Azure Database for MySQL .NET cert diagram

    • SSL_CERT_DIR을 사용하는 Linux의 .NET 사용자의 경우 BaltimoreCyberTrustRootDigiCertGlobalRootG2가 모두 SSL_CERT_DIR로 표시된 디렉터리에 있는지 확인합니다. 인증서가 없는 경우 누락된 인증서 파일을 만듭니다.

    • 기타(MySQL Client/MySQL Workbench/C/C++/Go/Python/Ruby/PHP/NodeJS/Perl/Swift) 사용자의 경우 두 CA 인증서 파일을 다음 형식으로 병합할 수 있습니다.

      -----BEGIN CERTIFICATE-----
      (Root CA1: BaltimoreCyberTrustRoot.crt.pem)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (Root CA2: DigiCertGlobalRootG2.crt.pem)
      -----END CERTIFICATE-----
      
  3. 원래 루트 CA pem 파일을 결합된 루트 CA 파일로 바꾸고, 애플리케이션/클라이언트를 다시 시작합니다.

    나중에 새 인증서가 서버 쪽에 배포되면 CA pem 파일을 DigiCertGlobalRootG2.crt.pem으로 변경할 수 있습니다.

참고 항목

인증서가 변경될 때까지 Baltimore 인증서를 삭제하거나 변경하지 마세요. 변경이 완료되면 통신문을 보냅니다. 그런 다음, Baltimore 인증서를 취소하는 것이 안전합니다.

BaltimoreCyberTrustRoot 인증서를 제거하면 어떻게 되나요?

Azure Database for MySQL 서버에 연결하는 동안 연결 오류가 발생하기 시작합니다. 연결을 유지하려면 BaltimoreCyberTrustRoot 인증서를 사용하여 SSL을 다시 구성해야 합니다.

자주 묻는 질문

SSL/TLS를 사용하지 않는 경우에도 루트 CA를 업데이트해야 하나요?

SSL/TLS를 사용하지 않는 경우 아무 작업도 수행할 필요가 없습니다.

단일 서버 인스턴스는 언제 루트 인증서를 변경하나요?

BaltimoreCyberTrustRoot에서 DigiCertGlobalRootG2로의 마이그레이션은 2022년 10월부터 Azure의 모든 지역에서 단계적으로 수행됩니다. 서버에 대한 연결이 끊어지지 않도록 하려면 결합된 CA 인증서 만들기에 설명된 단계를 수행합니다. 결합된 CA 인증서를 사용하면 이 두 인증서 중 하나를 사용하여 SSL을 통해 단일 서버 인스턴스에 연결할 수 있습니다.

BaltimoreCyberTrustRoot 인증서를 언제 완전히 제거할 수 있나요?

모든 Azure 지역에서 마이그레이션이 성공적으로 완료되면 단일 CA DigiCertGlobalRootG2 인증서를 변경해도 안전하다는 통신 게시물을 보냅니다.

SSL을 통해 단일 서버 인스턴스에 연결하는 동안 CA 인증서를 지정하지 않습니다. 위에서 언급한 단계를 계속 수행해야 하나요?

신뢰할 수 있는 루트 저장소에 CA 루트 인증서가 모두 있는 경우 추가 작업이 필요하지 않습니다. 이는 루트 CA 인증서에 액세스하기 위해 로컬 저장소를 사용하는 클라이언트 드라이버에도 적용됩니다.

SSL/TLS를 사용하는 경우 루트 CA를 업데이트하려면 데이터베이스 서버를 다시 시작해야 하나요?

아니요, 새 인증서 사용을 시작하기 위해 데이터베이스 서버를 다시 시작할 필요가 없습니다. 이 루트 인증서는 클라이언트 쪽 변경이며, 들어오는 클라이언트 연결에서 새 인증서를 사용하여 데이터베이스 서버에 연결할 수 있는지 확인해야 합니다.

루트 인증서 확인에서 SSL/TLS를 사용하는지 확인하려면 어떻게 할까요?

연결 문자열을 검토하여 연결에서 루트 인증서를 확인하는지 여부를 식별할 수 있습니다.

  • 연결 문자열에 sslmode=verify-ca 또는 sslmode=verify-identity가 포함되는 경우 인증서를 업데이트해야 합니다.
  • 연결 문자열에 sslmode=disable, sslmode=allow, sslmode=prefer, sslmode=require가 포함되는 경우 인증서를 업데이트할 필요가 없습니다.
  • 연결 문자열에서 sslmode를 지정하지 않는 경우 인증서를 업데이트할 필요가 없습니다.

연결 문자열을 추상화하는 클라이언트를 사용하는 경우 클라이언트 설명서를 검토하여 인증서를 확인하는지 여부를 파악합니다.

Azure Database for MySQL에서 App Service를 사용하는 경우 어떤 영향이 있나요?

Azure Database for MySQL에 연결하는 Azure App Service의 경우 애플리케이션에서 SSL을 사용하는 방법에 따라 두 가지 가능한 시나리오가 있습니다.

  • 이 새 인증서는 플랫폼 수준에서 App Service에 추가되었습니다. 응용 프로그램의 App Service 플랫폼에 포함된 SSL 인증서를 사용하는 경우에는 아무 작업도 필요하지 않습니다. 이는 가장 일반적인 시나리오입니다.
  • SSL 인증서 파일의 경로를 코드에 명시적으로 포함하는 경우 위에서 설명한 대로 새 인증서를 다운로드하고, 결합된 인증서를 생성하고, 인증서 파일을 사용해야 합니다. 이 시나리오의 좋은 예는 App Service 설명서에서 공유한 대로 App Service에서 사용자 지정 컨테이너를 사용하는 경우입니다. 이는 드문 시나리오이지만 이를 사용하는 일부 사용자를 확인했습니다.

Azure Database for MySQL에서 AKS(Azure Kubernetes Services)를 사용하는 경우 어떤 영향이 있나요?

AKS(Azure Kubernetes Services)를 사용하여 Azure Database for MySQL에 연결하려는 경우 전용 고객 호스트 환경에서 액세스하는 것과 비슷합니다. 여기의 단계를 참조하세요.

Azure Data Factory를 사용하여 Azure Database for MySQL에 연결하는 경우 어떤 영향이 있나요?

Azure Integration Runtime을 사용하는 커넥터의 경우 이 커넥터는 Azure 호스팅 환경의 Windows 인증서 저장소에 있는 인증서를 활용합니다. 이러한 인증서는 이미 새로 적용된 인증서와 호환되므로 아무 작업도 필요하지 않습니다.

SSL 인증서 파일의 경로를 연결 문자열에 명시적으로 포함하는 자체 호스팅 통합 런타임을 사용하는 커넥터의 경우 새 인증서를 다운로드하고 이를 사용하도록 연결 문자열을 업데이트해야 합니다.

이러한 변경에 대한 데이터베이스 서버 유지 관리 가동 중지 시간을 계획해야 하나요?

아니요. 데이터베이스 서버에 연결할 클라이언트 쪽에서만 변경되므로 데이터베이스 서버에 대한 유지 관리 가동 중지 시간이 필요하지 않습니다.

Microsoft에서 인증서를 업데이트하는 빈도는 어떻게 되나요? 또는 만료 정책은 무엇인가요?

Azure Database for MySQL에서 사용하는 이러한 인증서는 신뢰할 수 있는 CA(인증 기관)에서 제공합니다. 따라서 이러한 인증서를 지원하는 것은 CA에서 이러한 인증서를 지원하는 것과 관련이 있습니다. BaltimoreCyberTrustRoot 인증서는 2025년에 만료될 예정이므로 Microsoft는 만료되기 전에 인증서를 변경해야 합니다. 또한 이러한 미리 정의된 인증서에 예기치 않은 버그가 있는 경우 서비스가 항상 안전하고 규정을 준수하도록 보장하기 위해 Microsoft에서 2021년 2월 15일에 수행된 변경과 비슷한 방식으로 인증서 회전을 빠르게 수행해야 합니다.

읽기 복제본을 사용하는 경우 이 업데이트를 원본 서버 또는 읽기 복제본에서만 수행해야 하나요?

이 업데이트는 클라이언트 쪽 변경이므로 클라이언트가 복제본 서버에서 데이터를 읽는 데 사용된 경우 해당 클라이언트에 대한 변경 내용도 적용해야 합니다.

입력 데이터 복제를 사용하는 경우 작업을 수행해야 하나요?

입력 데이터 복제를 사용하여 Azure Database for MySQL에 연결하는 경우 다음 두 가지 사항을 고려해야 합니다.

  • 데이터 복제가 가상 머신(온-프레미스 또는 Azure 가상 머신)에서 Azure Database for MySQL로 수행되는 경우 SSL을 사용하여 복제본을 만드는지 확인해야 합니다. SHOW SLAVE STATUS를 실행하고, 다음 설정을 확인합니다.

    Master_SSL_Allowed            : Yes
    Master_SSL_CA_File            : ~\azure_mysqlservice.pem
    Master_SSL_CA_Path            :
    Master_SSL_Cert               : ~\azure_mysqlclient_cert.pem
    Master_SSL_Cipher             :
    Master_SSL_Key                : ~\azure_mysqlclient_key.pem
    

    CA_file, SSL_Cert 및 SSL_Key에 대한 인증서가 제공된 것으로 확인되면 새 인증서를 추가하여 파일을 업데이트하고 결합된 인증서 파일을 만들어야 합니다.

  • 데이터 복제가 두 Azure Database for MySQL 사이에 있는 경우 CALL mysql.az_replication_change_master를 실행하여 복제본을 다시 설정하고 새 이중 루트 인증서를 마지막 master_ssl_ca 매개 변수로 제공해야 합니다.

SSL이 사용되고 있는지 여부를 확인하는 서버 쪽 쿼리가 있나요?

SSL 연결을 사용하여 서버에 연결하는지 확인하려면 SSL 확인을 참조하세요.

내 인증서 파일에 DigiCertGlobalRootG2가 이미 있는 경우 필요한 작업이 있나요?

아니요. 인증서 파일에 DigiCertGlobalRootG2가 이미 있는 경우 아무 작업도 필요하지 않습니다.

enableRedirect와 함께 PHP 드라이버를 사용하는 경우 루트 인증서를 업데이트해야 하는 이유는 무엇인가요?

규정 준수 요구 사항을 해결하기 위해 호스트 서버의 CA 인증서가 BaltimoreCyberTrustRoot에서 DigiCertGlobalRootG2로 변경되었습니다. 이 업데이트를 통해 클라이언트 디바이스가 인증서 변경 및 새 루트 CA 세부 정보를 인식하지 못하기 때문에 enableRedirect와 함께 PHP 클라이언트 드라이버를 사용하는 데이터베이스 연결은 더 이상 서버에 연결할 수 없습니다. PHP 리디렉션 드라이버를 사용하는 클라이언트 디바이스는 게이트웨이를 우회하여 호스트 서버에 직접 연결합니다. Azure Database for MySQL 단일 서버의 아키텍처에 대한 자세한 내용은 이 링크를 참조하세요.

추가 질문이 있으면 어떻게 하나요?

질문이 있는 경우 Microsoft Q&A에서 커뮤니티 전문가의 답변을 받으세요. 지원 계획이 있고 기술 지원이 필요한 경우 Microsoft에 문의하세요.