다음을 통해 공유


IoT Hub에서 TLS(전송 계층 보안) 지원

IoT Hub는 TLS(전송 계층 보안)를 사용하여 IoT 디바이스 및 서비스의 연결을 보호합니다.

참고

Azure IoT Hub는 2025년 8월 31일TLS 1.0 및 1.1 사용 중지를 알리는 Azure 전체 서비스 공지 사항에 따라 TLS 1.0 및 1.1에 대한 지원을 사용 중지합니다.

따라서 모든 IoT 디바이스 및 서비스가 TLS 1.2 및 권장되는 암호와 호환되는지 적절히 테스트하고 유효성을 검사하는 것이 중요합니다. 테스트 및 규정 준수를 위한 메커니즘으로 최소 TLS 적용 기능을 사용하는 것이 좋습니다.

중요합니다

TLS 1.2 지원TLS 1.2 적용을 구분하는 것이 중요합니다. TLS 1.2는 모든 IoT Hub에서 지원됩니다. 즉, IoT Hubs는 TLS 1.2 프로토콜을 사용하여 연결을 처리할 수 있습니다. 반면 TLS 1.2 적용은 IoT Hub가 TLS 1.2 이상을 사용하는 연결 허용하도록 합니다. TLS 1.2 적용을 사용하도록 설정하면 서비스는 위에서 설명한 대로 강력한 암호 그룹을 사용하도록 강제 적용합니다. 향후 업데이트를 통해 권장되지 않는 암호 그룹을 허용하면서 TLS 1.2를 적용할 수 있습니다.

현재 TLS 1.2 적용은 선택한 지역에서만 지원됩니다.

  • 미국 동부
  • 미국 중남부
  • 미국 서부 2
  • US Gov 애리조나
  • US Gov 버지니아(참고: TLS 1.0/1.1 지원은 이 지역에서 사용할 수 없습니다. TLS 1.2 적용을 사용하도록 설정해야 하거나 IoT Hub를 만들지 못합니다).

IoT Hub 디바이스에서 실행 중인 TLS 버전을 알아보려면 TLS 1.0 및 1.1 지원 종료 가이드를 참조하세요.

상호 TLS 지원

상호 TLS 인증은 클라이언트가 서버(IoT Hub) 인증서를 인증하고 서버(IoT Hub)가 X.509 클라이언트 인증서 또는 X.509 지문을 사용하여 클라이언트를 인증하도록 보장합니다. IoT Hub는 권한 부여가 완료된 후 인증을 수행합니다.

AMQP(고급 메시지 큐 프로토콜) 및 MQTT(메시지 큐 원격 분석 전송) 프로토콜의 경우 IoT Hub는 초기 TLS 핸드셰이크에서 클라이언트 인증서를 요청합니다. 하나가 제공되면 IoT Hub는 클라이언트 인증서를 인증하고 클라이언트는 IoT Hub 인증서를 인증합니다. 이 프로세스를 상호 TLS 인증이라고 합니다. IoT Hub가 MQTT 연결 패킷을 수신하거나 AMQP 링크가 열리면 IoT Hub는 요청 클라이언트에 대해 권한 부여를 수행하고 클라이언트에 X.509 인증이 필요한지 확인합니다. 상호 TLS 인증이 완료되고 클라이언트가 디바이스로 연결할 권한이 있는 경우 허용됩니다. 하지만 클라이언트가 X.509 인증을 요구하고 TLS 핸드셰이크 중에 클라이언트 인증이 완료되지 않으면 IoT Hub는 연결을 거부합니다.

HTTP 프로토콜의 경우 클라이언트가 첫 번째 요청을 할 때 IoT Hub는 클라이언트에 X.509 인증이 필요한지 확인하고 클라이언트 인증이 완료되면 IoT Hub가 권한 부여를 수행합니다. 클라이언트 인증이 완료되지 않으면 IoT Hub는 연결을 거부합니다.

TLS 핸드셰이크에 성공한 이후 IoT Hub는 대칭 키 또는 X.509 인증서를 사용하여 디바이스를 인증할 수 있습니다. 인증서 기반 인증의 경우 IoT Hub는 사용자가 제공한 지문이나 CA(인증 기관)을 기준으로 인증서의 유효성을 검사합니다. 자세한 내용은 X.509 인증서로 ID 인증을 참조하세요.

IoT Hub의 서버 TLS 인증서

TLS 핸드셰이크 도중 IoT Hub는 클라이언트 연결을 위해 RSA 키 서버 인증서를 제공합니다. 글로벌 Azure 클라우드의 모든 IoT 허브는 DigiCert Global Root G2에서 발급한 TLS 인증서를 사용합니다.

모든 디바이스가 다음 세 가지 루트 CA를 신뢰하는 것이 좋습니다.

  • DigiCert Global G2 루트 CA
  • Microsoft RSA 루트 CA 2017

이러한 인증서를 다운로드할 수 있는 링크는 Azure 인증 기관 세부 정보를 참조하세요.

루트 CA 마이그레이션은 드뭅니다. 루트 CA가 손상되어 긴급 루트 CA 마이그레이션이 필요한 경우를 대비하여 IoT 솔루션을 항상 준비해야 합니다.

암호 그룹

보안 연결을 위한 Azure 보안 정책을 준수하기 위해 IoT Hub는 최소 TLS 1.2 적용이 필요한 다음 RSA 및 ECDSA 암호 도구 모음을 권장합니다.

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

현재 IoT Hub에서 허용되는 암호 그룹은 다음과 같습니다. 하지만 이러한 암호 그룹은 더 이상 Azure 보안 지침에서 권장되지 않습니다. 이러한 암호 그룹은 TLS 버전 1.0, 1.1, 1.2에서 작동합니다.

  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA

클라이언트에서 ClientHello 도중 사용할 더 높은 암호 그룹 목록을 제안할 수 있습니다. 하지만 IoT Hub에서는 ECDHE-ECDSA-AES256-GCM-SHA384와 같이 일부 항목을 지원하지 않을 수 있습니다. 이 경우 IoT Hub는 클라이언트의 기본 설정을 따르려 하지만 결국 ServerHello를 사용하여 암호 그룹을 낮추려고 협상합니다.

IoT Hub를 TLS 1.2 지원으로 업데이트

IoT Hub가 만들어지면 Azure Portal, minTlsVersion CLI 또는 SDK를 사용하여 속성을 업데이트할 수 있습니다. TLS 1.2 및 강력한 암호 그룹(선택한 지역에서만 허용)을 사용하도록 IoT Hub를 적용하거나 TLS 1.2 지원(모든 지역에서 지원됨)을 설정하도록 업데이트해야 하는 경우 다음 단계를 수행하면 됩니다.

TLS 1.2를 지원하도록 IoT Hub를 업데이트하거나 Azure Portal에서 강력한 암호 그룹을 적용하려면 다음을 수행합니다.

  1. Azure Portal에서 기존 IoT Hub로 이동합니다.

  2. 왼쪽 메뉴의 개요 탭에서 Essentials 섹션에서 최소 TLS 버전 링크를 클릭합니다.

    TLS 지원 최소 버전을 선택하는 방법을 보여 주는 스크린샷

  3. 최소 TLS 버전 쪽 창에서 1.2를 선택하여 TLS 1.2 이상을 지원하는 디바이스만 연결할 수 있도록 합니다.

  4. 업데이트클릭합니다.

    TLS 1.2 지원을 설정하는 방법을 보여 주는 스크린샷

참고

모든 공용 지역에서 IoT Hub를 TLS 1.2로 업데이트할 수 있습니다. 그러나 선택한 지역(미국 동부, 미국 중남부, 미국 서부 2, US Gov 애리조나 및 US Gov 버지니아) 중 하나에서 IoT Hub를 업데이트하는 경우 더 강력한 암호 그룹을 적용합니다.

IoT Hub에서 TLS 1.2 및 강력한 암호 도구 모음을 사용하도록 적용합니다.

IoT 디바이스가 TLS 1.2 및 강력한 암호화 그룹을 준수하는지 확인하려면 Azure IoT Hub의 최소 TLS 적용 기능을 사용하여 준수를 강제할 수 있습니다.

현재 이 기능은 다음 지역에서만 사용할 수 있으며 IoT Hub가 만들어지는 동안만 사용할 수 있습니다(다른 Azure 지역은 2025년에 지원될 예정입니다).

  • 미국 동부
  • 미국 중남부
  • 미국 서부 2
  • US Gov 애리조나
  • US Gov 버지니아(TLS 1.0/1.1 지원이 이 지역에서는 가능하지 않음 - TLS 1.2 적용을 사용 설정하지 않으면 IoT 허브 생성 실패)

Azure Portal에서 TLS 1.2 및 강력한 암호 그룹 적용을 사용하도록 설정하려면:

  1. Azure 포털에서 IoT Hub 생성 프로세스를 시작하는 방법

  2. 위의 목록 중 하나에서 지역을 선택합니다.

  3. 관리 -> 고급 -> TLS(전송 계층 보안) -> 최소 TLS 버전에서 1.2를 선택합니다. 이 설정은 지원되는 지역에서 만든 IoT 허브에 대해서만 표시됩니다.

    IoT 허브를 만드는 도중 TLS 1.2 적용을 설정하는 방법을 보여주는 스크린샷.

  4. 만들기를 선택합니다.

  5. IoT 디바이스를 이 IoT Hub에 연결

ARM 템플릿을 사용하여 만들려면 지원되는 지역에서 새로운 IoT 허브를 프로비전하고 리소스 사양에서 minTlsVersion 속성을 1.2로 설정합니다.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-resource-name>",
            "___location": "<any-of-supported-regions-below>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "<your-hubs-SKU-name>",
                "tier": "<your-hubs-SKU-tier>",
                "capacity": 1
            }
        }
    ]
}

이 구성을 사용하여 만들어진 IoT Hub 리소스는 TLS 버전 1.0 및 1.1을 사용하여 연결을 시도하는 디바이스 및 서비스 클라이언트를 거부합니다. 마찬가지로, ClientHello 메시지에 권장 암호가 나열되어 있지 않으면 TLS 핸드셰이크가 거부됩니다.

참고

장애 조치(failover) 시 IoT Hub의 minTlsVersion 속성은 장애 조치(failover) 후에도 지리적으로 쌍을 이루는 지역에서 유효하게 유지됩니다.

IoT Hub 디바이스의 TLS 버전 확인

Azure IoT Hub는 Azure Monitor 로그를 사용하여 분석할 수 있는 여러 범주에 대한 진단 로그를 제공할 수 있습니다. 연결 로그에서 IoT Hub 디바이스의 TLS 버전을 확인할 수 있습니다.

이러한 로그를 보려면 다음 단계를 따릅니다.

  1. Azure Portal에서 IoT Hub로 이동합니다.
  2. 모니터링 아래의 리소스 메뉴에서 진단 설정을 선택합니다. 진단 설정에서 "연결"이 확인 표시되어 있는지 확인합니다.
  3. 모니터링 아래의 리소스 메뉴에서 로그를 선택합니다.
  4. 다음 쿼리를 입력합니다.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| where OperationName == "deviceConnect"
| extend props_json = parse_json(properties_s)
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
  1. 쿼리 결과의 예는 다음과 같습니다. 디바이스 TLS 버전에 대한 쿼리를 보여 주는 다이어그램.
  2. 참고: HTTPS 연결을 사용하는 디바이스에서는 TLS 버전 쿼리를 사용할 수 없습니다.

SDK 및 IoT Edge에 대한 TLS 구성

다음 링크를 사용하여 IoT Hub 클라이언트 SDK에서 TLS 1.2 및 허용되는 암호를 구성합니다.

언어 TLS 1.2를 지원하는 버전 설명서
C 태그 2019-12-11 이상 링크
파이썬 버전 2.0.0 이상 링크
C# (프로그래밍 언어) 버전 1.21.4 이상 링크
자바 버전 1.19.0 이상 링크
Node.js 버전 1.12.2 이상 링크

IoT Edge 디바이스는 IoT Hub와 통신할 때 TLS 1.2를 사용하도록 구성할 수 있습니다. 이러한 목적을 위해 IoT Edge 설명서 페이지를 사용합니다.

ECC(타원 곡선 암호화) 서버 TLS 인증서

RSA 인증서에 유사한 보안을 제공하면서 ECC 인증서 유효성 검사(ECC 전용 암호 그룹 사용)는 최대 40% 절감된 컴퓨팅, 메모리 및 대역폭을 사용합니다. 이러한 절감은 작은 프로필 및 메모리로 인해 IoT 디바이스에서 중요하며, 네트워크 대역폭이 제한된 환경에서 사용 사례를 지원합니다.

IoT Hub의 ECC 서버 인증서를 사용하려면:

  1. 모든 디바이스가 다음 루트 CA를 신뢰하는지 확인합니다.
    • DigiCert Global G2 루트 CA
    • Microsoft RSA 루트 CA 2017
  2. ECDSA 암호 그룹을 포함하여 모든 RSA 암호 그룹을 제외하도록 클라이언트를 구성합니다. ECC 인증서에 지원되는 암호 그룹은 다음과 같습니다.
    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  3. 클라이언트를 IoT 허브에 연결합니다.

TLS 최대 조각 길이 협상

IoT Hub는 또한 TLS 프레임 크기 협상이라고도 하는 TLS 최대 조각 길이 협상도 지원합니다. 이 기능은 공개 미리 보기 상태입니다.

이 기능을 사용하여 최대 일반 텍스트 조각 길이를 기본값 2^14바이트 보다 작은 값으로 지정할 수 있습니다. 협상이 완료되면 IoT Hub와 클라이언트는 모든 조각이 협상된 길이보다 작도록 메시지 조각화를 시작합니다. 이 동작은 컴퓨팅 또는 메모리 제한이 있는 디바이스에 유용합니다. 자세한 내용은 공식 TLS 확장 사양을 참조하세요.

이 공개 미리 보기 기능에 대한 공식 SDK 지원은 아직 제공되지 않습니다. 시작하려면

  1. IoT Hub를 만듭니다.
  2. OpenSSL을 사용할 때 SSL_CTX_set_tlsext_max_fragment_length를 호출하여 조각 크기를 지정합니다.
  3. 클라이언트를 IoT Hub에 연결합니다.

인증서 고정

IoT Hub 엔드포인트와 연결된 TLS 서버 인증서 및 중간 인증서의 인증서 고정 및 필터링은 Microsoft에서 이러한 인증서를 별다른 통지 없이 자주 배포하므로 권장하지 않습니다. 꼭 고정해야 한다면 Azure IoT 블로그 게시물에 설명된 대로 루트 인증서만 고정하세요.

다음 단계