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 적용 기능을 사용하는 것이 좋습니다.
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 인증서를 참조하세요.
IoT Hub의 서버 TLS 인증서
TLS 핸드셰이크 도중 IoT Hub는 클라이언트 연결을 위해 RSA 키 서버 인증서를 제공합니다. 글로벌 Azure 클라우드의 모든 IoT Hub는 DigiCert Global Root G2에서 발급한 TLS 인증서를 사용합니다.
모든 디바이스가 다음 세 가지 루트 CA를 신뢰하는 것이 좋습니다.
- DigiCert Global G2 루트 CA
- Microsoft RSA root 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 버전 지원 |
---|---|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_AES_128_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
클라이언트에서 ClientHello
도중 사용할 더 높은 암호 그룹 목록을 제안할 수 있습니다. 하지만 일부는 IoT Hub에서 지원되지 않을 수 있습니다(예: ECDHE-ECDSA-AES256-GCM-SHA384
). 이 경우 IoT Hub는 클라이언트의 기본 설정을 따르려고 하지만 결국에는 암호 그룹을 ServerHello
사용하여 협상합니다.
TLS 1.2 및 강력한 암호 그룹을 사용하도록 IoT Hub 적용
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 및 강력한 암호 그룹 적용을 사용하도록 설정하려면 다음을 수행합니다.
Azure Portal에서 IoT Hub 만들기 마법사 응시
위의 목록 중 하나에서 지역을 선택합니다.
관리 -> 고급 -> TLS(전송 계층 보안) -> 최소 TLS 버전에서 1.2를 선택합니다. 이 설정은 지원되는 지역에서 만든 IoT 허브에 대해서만 표시됩니다.
만들기를 클릭합니다.
이 IoT Hub에 IoT 디바이스 연결
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을 사용하여 연결을 시도하는 디바이스 및 서비스 클라이언트를 거부합니다. 마찬가지로 메시지에 권장되는 암호화가 나열되지 않으면 TLS 핸드셰이크가 거부 ClientHello
됩니다.
참고 항목
이 minTlsVersion
속성은 읽기 전용이며 IoT Hub 리소스를 만든 후에는 변경할 수 없습니다. 따라서 모든 IoT 디바이스 및 서비스가 TLS 1.2 및 권장 암호와 미리 호환되는지 제대로 테스트하고 유효성을 검사해야 합니다.
장애 조치 minTlsVersion
시 IoT Hub의 속성은 장애 조치(failover) 후 지역 쌍을 이루는 지역에서 계속 유효합니다.
IoT Hub 디바이스에 대한 TLS 버전 확인
Azure IoT Hub는 Azure Monitor 로그를 사용하여 분석할 수 있는 여러 범주에 대한 진단 로그를 제공할 수 있습니다. 연결 로그에서 IoT Hub 디바이스에 대한 TLS 버전을 찾을 수 있습니다.
로그를 확인하려면 다음 단계를 수행합니다.
- Azure Portal에서 IoT Hub로 이동합니다.
- 모니터링 아래의 리소스 메뉴에서 진단 설정을 선택합니다. 진단 설정에 "연결" 확인 표시가 있는지 확인합니다.
- 모니터링 아래의 리소스 메뉴에서 로그를 선택합니다.
- 다음 쿼리를 입력합니다.
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
- 쿼리 결과의 예는 다음과 같습니다.
- 참고: HTTPS 연결을 사용하는 디바이스에는 TLS 버전 쿼리를 사용할 수 없습니다.
SDK 및 IoT Edge에 대한 TLS 구성
다음 링크를 사용하여 IoT Hub 클라이언트 SDK에서 TLS 1.2 및 허용된 암호화를 구성합니다.
언어 | TLS 1.2를 지원하는 버전 | 설명서 |
---|---|---|
C | 태그 2019-12-11 이상 | 링크 |
Python | 버전 2.0.0 이상 | 링크 |
C# | 버전 1.21.4 이상 | 링크 |
Java | 버전 1.19.0 이상 | 링크 |
NodeJS | 버전 1.12.2 이상 | 링크 |
IoT Edge 디바이스는 IoT Hub와 통신할 때 TLS 1.2를 사용하도록 구성할 수 있습니다. 이러한 목적을 위해 IoT Edge 설명서 페이지를 사용합니다.
ECC(타원 곡선 암호화) 서버 TLS 인증서
RSA 인증서에 유사한 보안을 제공하면서 ECC 인증서 유효성 검사(ECC 전용 암호 그룹 사용)는 최대 40% 절감된 컴퓨팅, 메모리 및 대역폭을 사용합니다. 이러한 절감은 작은 프로필 및 메모리로 인해 IoT 디바이스에서 중요하며, 네트워크 대역폭이 제한된 환경에서 사용 사례를 지원합니다.
IoT Hub의 ECC 서버 인증서를 사용하려면 다음을 수행합니다.
- 모든 디바이스가 다음 루트 CA를 신뢰하는지 확인합니다.
- DigiCert Global G2 루트 CA
- Microsoft RSA root CA 2017
- 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
- 클라이언트를 IoT Hub에 연결합니다.
TLS 최대 조각 길이 협상
IoT Hub는 또한 TLS 프레임 크기 협상이라고도 하는 TLS 최대 조각 길이 협상도 지원합니다. 이 기능은 공개 미리 보기로 제공됩니다.
이 기능을 사용하여 최대 일반 텍스트 조각 길이를 기본값 2^14바이트 보다 작은 값으로 지정할 수 있습니다. 협상이 완료되면 IoT Hub와 클라이언트는 모든 조각이 협상된 길이보다 작도록 메시지 조각화를 시작합니다. 이 동작은 컴퓨팅 또는 메모리 제한이 있는 디바이스에 유용합니다. 자세한 내용은 공식 TLS 확장 사양을 참조하세요.
이 공개 미리 보기 기능에 대한 공식 SDK 지원은 아직 제공되지 않습니다. 시작하려면
- IoT Hub를 만듭니다.
- OpenSSL을 사용할 때 SSL_CTX_set_tlsext_max_fragment_length를 호출하여 조각 크기를 지정합니다.
- 클라이언트를 IoT Hub에 연결합니다.
인증서 고정
IoT Hub 엔드포인트와 연결된 TLS 서버 인증서 및 중간 인증서의 인증서 고정 및 필터링은 Microsoft에서 이러한 인증서를 거의 또는 전혀 알림 없이 자주 롤아웃하기 때문에 권장되지 않습니다. 꼭 고정해야 한다면 Azure IoT 블로그 게시물에 설명된 대로 루트 인증서만 고정하세요.
다음 단계
- IoT Hub 보안 및 액세스 제어에 대한 자세한 내용은 IoT Hub에 대한 액세스 제어를 참조하세요.
- 디바이스 인증에 X509 인증서 사용에 대해 자세히 알아보려면 X.509 CA 인증서를 사용한 디바이스 인증을 참조하세요.