인증서를 사용한 MQTT 클라이언트 인증

Azure Event Grid의 MQTT 브로커는 X.509 인증서를 사용하는 클라이언트의 인증을 지원합니다. X.509 인증서는 특정 클라이언트를 테넌트와 연결하는 자격 증명을 제공합니다. 이 모델에서 인증은 일반적으로 세션 설정 중에 한 번 발생합니다. 그런 다음, 동일한 세션을 사용하는 모든 이후 작업은 해당 ID에서 온 것으로 간주됩니다.

지원되는 인증 모드는 다음과 같습니다.

  • CA(인증 기관)에서 발급한 인증서
  • 자체 서명된 클라이언트 인증서 - 지문
  • Microsoft Entra ID 토큰

이 문서는 인증서를 중점적으로 다룹니다. Microsoft Entra ID 토큰을 사용한 인증에 관한 자세한 내용은 Microsoft Entra ID 토큰을 사용하여 클라이언트 인증을 참조하세요.

CA(인증 기관) 서명된 인증서

이 메서드에서는 루트 또는 중간 X.509 인증서가 서비스에 등록됩니다. 기본적으로 클라이언트 인증서에 서명하는 데 사용되는 루트 또는 중간 인증서를 먼저 서비스에 등록해야 합니다.

Important

  • 클라이언트 인증서에 서명하는 데 사용되는 루트 또는 중간 인증서를 업로드해야 합니다. 전체 인증서 체인을 업로드할 필요는 없습니다.
  • 예를 들어 루트, 중간 및 리프 인증서 체인이 있는 경우 리프/클라이언트 인증서에 서명된 중간 인증서를 업로드해야 합니다.

클라이언트 인증서에 서명하는 데 사용되는 루트 및 중간 인증서가 있는 CA 인증서 페이지를 보여 주는 스크린샷.

클라이언트를 등록하는 동안 클라이언트의 인증 이름을 보유하는 데 사용되는 인증서 필드를 식별해야 합니다. 서비스는 클라이언트 메타데이터의 클라이언트 인증 이름과 인증서의 인증 이름을 일치하여 클라이언트의 유효성을 검사합니다. 또한 서비스는 이전에 등록된 루트 또는 중간 인증서로 서명되었는지 확인하여 클라이언트 인증서의 유효성을 검사합니다.

5개의 인증서 체인 기반 유효성 검사 체계가 있는 클라이언트 메타데이터를 보여 주는 스크린샷.

자체 서명된 클라이언트 인증서 - 지문

이 인증 방법에서 클라이언트 레지스트리는 클라이언트가 인증하는 데 사용할 인증서의 정확한 지문을 저장합니다. 클라이언트가 서비스에 연결하려고 하면 서비스는 클라이언트 인증서에 제공된 지문과 클라이언트 메타데이터에 저장된 지문을 비교하여 클라이언트의 유효성을 검사합니다.

지문 인증 체계가 있는 클라이언트 메타데이터를 보여 주는 스크린샷.

참고 항목

  • 클라이언트 연결 패킷의 사용자 이름 필드에 클라이언트 인증 이름을 포함하는 것이 좋습니다. 클라이언트 인증서와 함께 이 인증 이름을 사용하면 서비스에서 클라이언트를 인증할 수 있습니다.
  • 사용자 이름 필드에 인증 이름을 제공하지 않는 경우 네임스페이스 범위에서 클라이언트 인증 이름에 대한 대체 원본 필드를 구성해야 합니다. 서비스는 클라이언트 연결을 인증하기 위해 클라이언트 인증서의 해당 필드에서 클라이언트 인증 이름을 찾습니다.

네임스페이스 범위의 구성 페이지에서 대체 클라이언트 인증 이름 원본을 사용하도록 설정한 다음 클라이언트 인증 이름이 있는 클라이언트 인증서 필드를 선택할 수 있습니다.

클라이언트 인증 이름 대체 원본 설정이 있는 네임스페이스 구성 페이지를 보여 주는 스크린샷.

네임스페이스 구성 페이지에서 클라이언트 인증서 필드의 선택 순서가 중요합니다. 서비스는 클라이언트 인증서 필드에서 동일한 순서로 클라이언트 인증 이름을 찾습니다.

예를 들어 클라이언트 연결을 인증하는 동안 인증서 DNS 옵션을 먼저 선택한 다음 주체 이름 옵션을 선택하는 경우

  • 서비스는 클라이언트 인증 이름에 대한 클라이언트 인증서의 주체 대체 이름 DNS 필드를 먼저 확인합니다.
  • DNS 필드가 비어 있으면 서비스는 클라이언트 인증서의 주체 이름 필드를 확인합니다.
  • 클라이언트 인증 이름이 이러한 두 필드 중 하나에 없으면 클라이언트 연결이 거부됩니다.

클라이언트 인증의 두 모드 모두에서 클라이언트 인증 이름은 연결 패킷의 사용자 이름 필드 또는 클라이언트 인증서 필드 중 하나에 제공될 것으로 예상합니다.

클라이언트 인증 이름의 대체 원본에 대해 지원되는 클라이언트 인증서 필드

다음 필드 중 하나를 사용하여 클라이언트 인증서에 클라이언트 인증 이름을 제공할 수 있습니다.

인증 이름 원본 옵션 인증서 필드 설명
인증서 주체 이름 tls_client_auth_subject_dn 인증서의 주체 고유 이름입니다.
인증서 Dns tls_client_auth_san_dns 인증서의 dNSName SAN 항목입니다.
인증서 Uri tls_client_auth_san_uri 인증서의 uniformResourceIdentifier SAN 항목입니다.
인증서 IP tls_client_auth_san_ip 인증서의 iPAddress SAN 항목에 있는 IPv4 또는 IPv6 주소입니다.
인증서 Email tls_client_auth_san_email 인증서의 rfc822Name SAN 항목입니다.

다음 단계