다음을 통해 공유


TLS 연결 오류 문제 해결

중요합니다

새 중간 CA 인증서 및 결과 인증서 체인을 업데이트하기 위해 Azure Database for PostgreSQL에 대한 TLS 인증서 회전을 시작했습니다. 루트 CA는 동일하게 유지됩니다.

클라이언트 구성이 TLS에 대한 권장 구성을 구현하는 경우에는 아무 작업도 필요하지 않습니다.

인증서 회전 일정

  • 미국 중서부, 동아시아 및 영국 남부 Azure 지역은 2025년 11월 11일에 TLS 인증서 회전을 시작했습니다.
  • 2026년 1월 19일부터 이 인증서 회전은 Azure Government를 포함한 나머지(중국 제외) 지역으로 확장될 예정입니다.
  • 2026년 봄 축제(중국 설날) 이후 중국 지역도 루트 CA 중 하나에 대한 변경을 포함하는 인증서 회전을 거칩니다.

클라이언트 구성 유효성 검사

계획된 회전 전에 클라이언트 구성의 유효성을 검사하려면 TLS에 대한 권장 구성을 구현해야 합니다.

루트 인증서 저장소 확인

필요한 최소 루트 인증서 또는 클라이언트의 루트 인증서 저장소에 설치된 루트 인증서의 전체 집합이 있어야 합니다.

주의

클라이언트의 루트 인증서 저장소에서 Azure 루트 CA 인증서만 신뢰합니다. Microsoft에서 인증서 체인을 업데이트하거나 개별 서버 인증서를 회전할 때 이러한 사례로 인해 예기치 않은 연결 문제가 발생할 수 있으므로 중간 CA 또는 개별 서버 인증서를 신뢰하지 마세요.

TLS 연결 상태 확인

현재 TLS 연결 상태를 확인하려면 sslinfo 확장을 로드한 다음 함수를 ssl_is_used() 호출하여 TLS가 사용되고 있는지 확인할 수 있습니다. 연결에서 TLS를 사용하는 경우 함수가 반환 t 됩니다. 그 외의 경우 f를 반환합니다. 다음 쿼리를 사용하여 Azure Database for PostgreSQL 유연한 서버 인스턴스의 TLS 사용량에 대한 모든 정보를 프로세스, 클라이언트 및 애플리케이션별로 수집할 수도 있습니다.

SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;

OpenSSL을 사용하여 TLS 연결 테스트

테스트를 위해 이 openssl 명령을 사용하여 Azure Database for PostgreSQL에 연결하고 TLS 인증서를 표시할 수 있습니다.

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

이 명령은 TLS 버전 및 암호와 같은 낮은 수준 프로토콜 정보를 출력합니다. -starttls postgres 옵션을 사용해야 합니다. 그렇지 않으면 이 명령은 사용 중인 TLS가 없음을 보고합니다. 이 명령을 사용하려면 OpenSSL 1.1.1 이상이 필요합니다.

읽기 복제본

루트 CA를 Microsoft RSA 루트 CA 2017로 마이그레이션하면 새로 만들어진 복제본이 마이그레이션에 만들어진 주 서버보다 최신 루트 CA 인증서에 있을 수 있습니다. sslmode=verify-casslmode=verify-full 구성 설정을 사용하는 클라이언트의 경우, 새 서버와 기존 서버에서 전환이 완료될 때까지 새 루트 CA 인증서와 이전 루트 CA 인증서를 모두 수락해야 합니다.

Troubleshoot

  1. 먼저 문제를 재현합니다.
  2. 진단 데이터 수집(클라이언트 쪽 오류 메시지, psql 출력, OpenSSL s_client 출력 및 서버 로그)
  3. 서버 매개 변수 확인(require_secure_transport, ssl_min_protocol_version, ssl_max_protocol_version)
  4. 인증서 체인 및 클라이언트 sslmode/sslrootcert 설정을 확인하여 프로토콜 버전, 암호 그룹 또는 누락/회전된 인증서의 불일치를 정확히 파악합니다.

TLS 연결 오류

  1. TLS 프로토콜 버전 호환성 문제를 해결하는 첫 번째 단계는 사용자 또는 사용자가 클라이언트의 TLS 암호화에서 Azure Database for PostgreSQL 유연한 서버 인스턴스에 액세스하려고 할 때 표시되는 오류 메시지를 식별하는 것입니다. 애플리케이션과 플랫폼에 따라 오류 메시지가 다를 수 있습니다. 많은 경우, 근본적인 문제를 지적합니다.
  2. TLS 프로토콜 버전 호환성을 확인하려면 데이터베이스 서버 및 애플리케이션 클라이언트의 TLS 구성을 확인하여 호환되는 버전 및 암호 그룹을 지원하는지 확인합니다.
  3. 데이터베이스 서버와 클라이언트의 TLS 버전 및 암호 그룹 간의 불일치 또는 간격을 분석합니다. 특정 옵션을 사용하거나 사용하지 않도록 설정하고, 소프트웨어를 업그레이드하거나 다운그레이드하거나, 인증서나 키를 변경하여 문제를 해결해 보세요. 예를 들어 보안 및 호환성 요구 사항에 따라 서버 또는 클라이언트에서 특정 TLS 버전을 사용하거나 사용하지 않도록 설정해야 할 수 있습니다. 예를 들어, 안전하지 않고 더 이상 사용되지 않는 TLS 1.0과 TLS 1.1을 사용하지 않도록 설정하고, 더 안전하고 최신적인 TLS 1.2와 TLS 1.3을 사용하도록 설정해야 할 수도 있습니다.
  4. Microsoft RSA 루트 CA 2017에서 발급한 최신 인증서는 Digicert Global Root G2 CA에서 교차 서명한 체인의 중간 인증서입니다. 일부 Postgres 클라이언트 라이브러리는 sslmode=verify-full 또는 sslmode=verify-ca 설정을 사용하는 동안 중간 인증서와 교차 서명된 루트 CA 인증서에서 연결 실패가 발생할 수 있습니다. 그 결과 대체 신뢰 경로가 생성됩니다.

이러한 문제를 해결하려면 필요한 모든 인증서를 클라이언트 인증서 저장소에 추가하거나 매개 변수를 sslrootcert 명시적으로 지정합니다. 또는 PGSSLROOTCERT 환경 변수를 기본값인 %APPDATA%\postgresql\root.crt에서 Microsoft RSA 루트 CA 2017 루트 CA 인증서가 배치된 로컬 경로로 설정합니다.

인증 기관 문제

비고

클라이언트 애플리케이션 연결 문자열에서 또는 sslmode=verify-full 설정을 사용하지 않고, sslmode=verify-ca 설정을 사용하지 않는 경우 인증서 회전은 영향을 주지 않습니다. 따라서 이 섹션의 단계를 따를 필요가 없습니다.

  1. 신뢰할 수 있는 루트 저장소에 있는 인증서 목록을 생성합니다.
    1. 예를 들어 Java 키 저장소에서 프로그래밍 방식으로 신뢰할 수 있는 인증서 목록을 가져올 수 있습니다.
    2. 예를 들어 cacerts java 키 저장소를 확인하여 필요한 인증서가 이미 포함되어 있는지 확인할 수 있습니다.
  2. 개별 중간 인증서 또는 개별 PostgreSQL 서버 인증서가 있는 경우 인증서 고정을 사용합니다. 지원되지 않는 구성입니다.
  3. 인증서 고정을 제거하려면 신뢰할 수 있는 루트 저장소에서 모든 인증서를 제거하고 루트 CA 인증서만 추가합니다.

이러한 단계를 수행한 후에도 문제가 발생하는 경우 Microsoft 지원에 문의하세요. 타이틀에 ICA 회전 2026을 포함하십시오.

인증서 고정 문제

클라이언트 애플리케이션 연결 문자열에서 sslmode=verify-full 또는 sslmode=verify-ca 설정을 사용하지 않는 경우 인증서 회전의 영향을 받지 않습니다. 따라서 이 섹션의 단계를 따를 필요가 없습니다.

  1. 애플리케이션에서 인증서 고정을 사용하고 있는지 확인합니다.
  2. 신뢰할 수 있는 루트 저장소에 있는 인증서 목록을 생성합니다. 예를 들어:
    1. Java 키 저장소에서 프로그래밍 방식으로 신뢰할 수 있는 인증서 목록을 가져옵니다.
    2. cacerts java 키 저장소에 필요한 인증서가 이미 포함되어 있는지 확인합니다.
  3. 개별 중간 인증서 또는 개별 PostgreSQL 서버 인증서가 있는 경우 인증서 고정을 사용합니다.
  4. 인증서 고정을 제거하려면 신뢰할 수 있는 루트 저장소에서 모든 인증서를 제거하고 새 인증서를 추가합니다.
  5. Microsoft의 공식 리포지토리인 Azure 인증 기관 세부 정보에서 업데이트된 인증서를 다운로드할 수 있습니다.

이러한 단계를 수행한 후에도 문제가 발생하는 경우 Microsoft 지원에 문의하세요. 타이틀에 'ICA 회전 2026'를 포함하세요.

인증서 체인 확인

이전 체인

  • DigiCert 글로벌 루트 G2
    • Microsoft Azure RSA TLS 발급 CA 03 / 04 / 07 / 08
    • 서버 인증서

새 체인

  • DigiCert 글로벌 루트 G2
    • Microsoft TLS RSA 루트 인증서 G2
    • Microsoft TLS G2 RSA CA OCSP 02 / 04 / 06 / 08 / 10 / 12 / 14 / 16
    • 서버 인증서