보안 및 규정 준수 표준을 유지하기 위해 2025년 7월 31일 이후에 Azure Database for MySQL 유연한 서버에 대한 루트 인증서를 변경하기 시작합니다.
현재 루트 인증서 DigiCert 글로벌 루트 CA 는 두 개의 새 인증서로 대체됩니다.
- DigiCert 글로벌 루트 G2
- Microsoft RSA 루트 인증 기관 2017
루트 인증서 확인과 함께 TLS(전송 계층 보안)를 사용하는 경우 전환 기간 동안 세 개의 루트 인증서가 모두 설치되어 있어야 합니다. 모든 인증서가 변경되면 저장소에서 이전 SHA-1 루트 인증서 DigiCert Global Root CA 를 제거할 수 있습니다. 기존 저장소에 두 개의 새 인증서를 추가합니다. 2025년 7월 31일 이전에 새 인증서를 추가하지 않으면 데이터베이스에 대한 연결이 실패합니다.
이 문서에서는 두 개의 새 루트 인증서를 추가하는 방법에 대한 추가 지침을 제공합니다. 변경 사항에 대한 정보뿐만 아니라 자주 묻는 질문에 대한 답변도 포함하여
참고 항목
SHA-1의 지속적인 사용이 차단기이고 일반 출시 전에 인증서를 변경하려는 경우 이 문서의 지침에 따라 클라이언트에서 결합된 CA(인증 기관) 인증서를 만듭니다. 그런 다음 지원 요청을 열어 Azure Database for MySQL에 대한 인증서를 회전합니다.
루트 인증서 업데이트가 필요한 이유는 무엇인가요?
Azure Database for MySQL 사용자는 미리 정의된 인증서만 사용하여 MySQL 서버 인스턴스에 연결할 수 있습니다. 이러한 인증서는 루트 인증 기관에서 서명합니다. 현재 인증서는 DigiCert 글로벌 루트 CA에 의해 서명됩니다. SHA-1을 기반으로 합니다. SHA-1 해시 알고리즘은 검색된 취약성으로 인해 상당히 안전하지 않습니다. 더 이상 보안 표준을 준수하지 않습니다.
문제를 해결하기 위해 표준을 준수하는 루트 인증 기관에서 서명한 인증서로 교체해야 했습니다.
클라이언트에서 루트 인증서 저장소를 업데이트하는 방법
애플리케이션이 루트 인증서 회전 후 Azure Database for MySQL에 연결할 수 있도록 하려면 클라이언트에서 루트 인증서 저장소를 업데이트해야 합니다. 루트 인증서 확인과 함께 SSL/TLS를 사용하는 경우 이 작업이 필요합니다.
다음 단계에서는 클라이언트에서 루트 인증서 저장소를 업데이트하는 프로세스를 안내합니다.
세 개의 루트 인증서를 다운로드합니다. DigiCert 글로벌 루트 CA 인증서를 설치한 경우 첫 번째 다운로드를 건너뛸 수 있습니다.
다운로드한 인증서를 클라이언트 인증서 저장소에 추가합니다. 프로세스는 클라이언트 유형에 따라 달라집니다.
Java 사용자의 경우 다음 명령을 실행하여 신뢰할 수 있는 새 루트 인증서 저장소를 만듭니다.
keytool -importcert -alias MySqlFlexServerCACert -file digiCertGlobalRootCA.crt.pem -keystore truststore -storepass password -noprompt keytool -importcert -alias MySqlFlexServerCACert2 -file digiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt keytool -importcert -alias MicrosoftRSARootCert2017 -file MicrosoftRSARootCertificateAuthority2017.crt -keystore truststore -storepass password -noprompt
그런 다음 원래 키 저장소 파일을 새로 생성된 키 저장소 파일로 바꿉다.
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
System.setProperty("javax.net.ssl.trustStorePassword","password");
Java 사용자의 경우 다음 명령을 실행하여 신뢰할 수 있는 새 루트 인증서를 기존 신뢰할 수 있는 루트 인증서 저장소에 추가합니다.
keytool -importcert -alias MySqlFlexServerCACert2 -file digiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt keytool -importcert -alias MicrosoftRSARootCert2017 -file MicrosoftRSARootCertificateAuthority2017.crt -keystore truststore -storepass password -noprompt
기존 키 저장소를 업데이트하는 경우
javax.net.ssl.trustStore
및javax.net.ssl.trustStorePassword
속성을 변경할 필요가 없습니다.Windows의 .NET 사용자의 경우 DigiCert Global Root CA, DigiCert Global Root G2 및 Microsoft RSA 루트 인증 기관 2017 이 신뢰할 수 있는 루트 인증 기관의 Windows 인증서 저장소에 있는지 확인합니다. 인증서가 없으면 가져옵니다.
Linux에서
SSL_CERT_DIR
을(를) 사용하는 .NET 사용자라면,DigiCertGlobalRootCA.crt.pem
,DigiCertGlobalRootG2.crt.pem
,Microsoft RSA Root Certificate Authority 2017.crt.pem
가SSL_CERT_DIR
로 표시된 디렉터리에 있는지 확인하세요. 인증서가 없으면 누락된 인증서 파일을 만듭니다.Microsoft RSA Root Certificate Authority 2017.crt
다음 명령을 실행하여 인증서를 PEM 형식으로 변환합니다.openssl x509 -inform der -in MicrosoftRSARootCertificateAuthority2017.crt -out MicrosoftRSARootCertificateAuthority2017.crt.pem
다른(MySQL Workbench, C, C++, Go, Python, Ruby, PHP, Node.js, Perl 또는 Swift) 사용자의 경우 CA 인증서 파일을 다음 형식으로 병합할 수 있습니다.
-----BEGIN CERTIFICATE----- (Root CA1:DigiCertGlobalRootCA.crt.pem) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root CA2: DigiCertGlobalRootG2.crt.pem) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root CA3: .crt.pem) -----END CERTIFICATE-----
루트 인증서 확인에서 SSL/TLS를 사용하는지 확인하려면 어떻게 할까요?
연결 문자열을 검토하여 연결이 루트 인증서를 확인하는지 여부를 식별할 수 있습니다.
- 연결 문자열에
sslmode=verify-ca
또는sslmode=verify-identity
이 포함되어 있는 경우, 신뢰할 수 있는 루트 인증서를 업데이트해야 합니다. - 연결 문자열에
sslmode=disable
,sslmode=allow
,sslmode=prefer
, 또는sslmode=require
가 포함되어 있는 경우 신뢰할 수 있는 루트 인증서를 업데이트할 필요가 없습니다. - 연결 문자열이
sslmode
을 지정하지 않는 경우, 인증서를 업데이트할 필요가 없습니다.
연결 문자열을 추상화하는 클라이언트를 사용하는 경우 클라이언트 설명서를 검토하여 인증서를 확인하는지 여부를 파악합니다.
서버 쪽 쿼리를 사용하여 SSL을 사용하고 있는지 확인할 수 있나요?
SSL 연결을 사용하여 서버에 연결하는지 확인하려면 TLS/SSL 연결 확인을 참조하세요.
자주 묻는 질문
DigiCert 글로벌 루트 CA 인증서를 제거하면 어떻게 하나요?
Microsoft의 인증서 회전 전에 인증서를 제거하면 연결이 실패합니다. DigiCert 글로벌 루트 CA 인증서를 클라이언트 인증서 저장소에 다시 추가하여 연결을 복원합니다.
DigiCert 글로벌 루트 G2 인증서를 다운로드한 후 MySQL 연결이 설정되도록 하려면 어떻게 해야 하나요?
루트 인증서가 변경되면 새로 생성된 인증서가 서버로 푸시됩니다. 서버를 다음으로 다시 시작하면 새 인증서가 사용됩니다. 연결 문제가 발생하는 경우 위의 지침에서 실행 실수가 있는지 확인합니다.
SSL/TLS를 사용하지 않는 경우에도 루트 인증서를 업데이트해야 하나요?
아니요. SSL/TLS를 사용하지 않는 경우 아무 작업도 수행할 필요가 없습니다.
SSL/TLS를 사용하는 경우 데이터베이스 서버를 다시 시작하여 루트 인증서를 업데이트해야 하나요?
아니요. SSL/TLS를 사용하는 경우 새 인증서 사용을 시작하기 위해 데이터베이스 서버를 다시 시작할 필요가 없습니다.
인증서 업데이트는 클라이언트 쪽 변경입니다. 들어오는 클라이언트 연결은 새 인증서를 사용하여 데이터베이스 서버에 연결할 수 있는지 확인해야 합니다.
이 변경을 수행하려면 데이터베이스 서버에 대한 유지 관리 가동 중지 시간을 계획해야 하나요?
아니요. 변경 내용은 데이터베이스 서버에 연결하기 위해 클라이언트 쪽에서만 수행되므로 데이터베이스 서버에 대한 유지 관리 가동 중지 시간이 필요하지 않습니다.
루트 인증서 회전에 대한 롤백 계획이 있나요?
애플리케이션에서 인증서 회전 후 문제가 발생하는 경우 사용 사례에 따라 결합된 인증서 또는 SHA-2 기반 인증서를 다시 설치하여 인증서 파일을 바꿉니다. 변경은 필수이므로 변경 사항을 롤백하지 않는 것이 좋습니다.
Azure Database for MySQL에서 사용하는 인증서가 신뢰할 수 있나요?
Azure Database for MySQL에서 사용하는 인증서는 신뢰할 수 있는 인증 기관에서 가져옵니다. 이러한 인증서에 대한 지원은 CA에서 제공하는 지원을 기반으로 합니다.
DigiCert 글로벌 루트 CA 인증서가 덜 안전한 SHA-1 해시 알고리즘을 사용하면 Azure Database for MySQL에 연결하는 애플리케이션의 보안이 손상됩니다. 따라서 인증서 변경을 수행해야 합니다.
DigiCert Global Root G2 인증서가 단일 서버 배포 옵션이 사용된 것과 동일한 인증서인가요?
예. Azure Database for MySQL에 대한 SHA-2 기반 루트 인증서인 DigiCert Global Root G2 인증서는 단일 서버 배포 옵션이 사용한 것과 동일한 인증서입니다.
읽기 복제본을 사용하는 경우 원본 서버 또는 읽기 복제본에서만 이 업데이트를 수행해야 하나요?
이 업데이트는 클라이언트 쪽 변경이므로 여러 클라이언트가 복제본 서버에서 데이터를 읽는 경우 해당 클라이언트에 대한 변경 내용도 적용해야 합니다.
데이터 인 복제를 사용하는 경우 작업을 수행해야 하나요?
데이터 인 복제를 사용하여 Azure Database for MySQL에 연결하고 데이터 복제가 두 개의 Azure Database for MySQL 데이터베이스 사이에 있는 경우 실행CALL mysql.az_replication_change_master
하여 복제본을 다시 설정해야 합니다. 트리플 이중 루트 인증서를 마지막 매개 변수인 master_ssl_ca로 제공합니다.
이미 내 인증서 파일에 DigiCert Global Root G2
와 Microsoft Root Certificate Authority 2017
가 있는 경우, 어떤 조치를 취해야 하나요?
아니요. 인증서 파일에 DigiCert Global Root G2
인증서와 Microsoft Root Certificate Authority 2017
인증서가 이미 있는 경우 아무 작업도 수행할 필요가 없습니다.
더 많은 질문이 있는 경우 어떻게 하나요?
여전히 질문이 있는 경우 Microsoft Q&A의 커뮤니티 전문가로부터 답변을 얻을 수 있습니다.