Azure IoT Hub DPS(Device Provisioning Service)의 TLS 지원
DPS는 TLS(전송 계층 보안)를 사용하여 IoT 디바이스의 연결을 보호합니다.
DPS에서 지원하는 현재 TLS 프로토콜 버전은 다음과 같습니다.
- TLS 1.2
최소 TLS 버전으로 연결 제한
최소 TLS 버전 이상을 사용하는 디바이스 클라이언트 연결만 허용하도록 DPS 인스턴스를 구성할 수 있습니다.
Important
현재 DPS는 TLS 1.2만 지원하므로 DPS 인스턴스를 만들 때 최소 TLS 버전을 지정할 필요가 없습니다. 이 기능은 향후 확장을 위해 제공됩니다.
이렇게 하려면 Azure Resource Manager 템플릿의 DPS 리소스 사양에서 minTlsVersion
속성을 1.2
로 설정하여 새 DPS 리소스 설정을 프로비저닝합니다. 다음 예제 템플릿 JSON은 새 DPS 인스턴스의 minTlsVersion
속성을 지정합니다.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/ProvisioningServices",
"apiVersion": "2020-01-01",
"name": "<provide-a-valid-DPS-resource-name>",
"location": "<any-region>",
"properties": {
"minTlsVersion": "1.2"
},
"sku": {
"name": "S1",
"capacity": 1
},
}
]
}
다음 Azure CLI 명령을 사용하여 템플릿을 배포할 수 있습니다.
az deployment group create -g <your resource group name> --template-file template.json
Resource Manager 템플릿을 사용하여 DPS 리소스를 만드는 방법에 대한 자세한 내용은 Azure Resource Manager 템플릿을 사용하여 DPS 설정을 참조하세요.
이 구성을 사용하여 만든 DPS 리소스는 TLS 버전 1.0 및 1.1을 사용하여 연결을 시도하는 디바이스를 거부합니다.
참고 항목
minTlsVersion
속성은 읽기 전용이며 DPS 리소스를 만든 후에는 변경할 수 없습니다. 따라서 미리 적절하게 테스트하여 ‘모든’ IoT 디바이스가 TLS 1.2 및 권장 암호화와 호환되는지 확인하는 것이 중요합니다.
참고 항목
장애 조치(failover) 시 DPS의 minTlsVersion
속성은 지리적으로 쌍을 이루는 지역에서 장애 조치 후에도 계속 적용됩니다.
권장되는 암호
DPS 인스턴스는 다음과 같은 권장 및 레거시 암호화 그룹의 사용을 적용합니다.
권장되는 TLS 1.2 암호화 그룹 |
---|
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
레거시 암호화 그룹
이 암호화 그룹은 현재 DPS에서 계속 지원되지만 사용이 중단될 예정입니다. 가능하면 위의 권장 암호화 그룹을 사용합니다.
옵션 #1(보안 강화) |
---|
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
옵션 #2(성능 향상) |
---|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
상호 TLS 지원
DPS 등록이 X.509 인증에 대해 구성된 경우 DPS에서 상호 TLS(mTLS)가 지원됩니다.
인증서 고정
인증서 고정과 TLS 서버 인증서(리프 인증서라고도 함) 및 DPS 엔드포인트와 연결된 중간 인증서의 필터링을 사용하지 않는 것이 좋습니다. Microsoft에서 거의 또는 전혀 통지하지 않고 이러한 인증서를 자주 회전하기 때문입니다. 꼭 고정해야 한다면 Azure IoT 블로그 게시물에 설명된 대로 루트 인증서만 고정하세요.
IoT SDK에서 TLS 1.2 사용
아래 링크를 사용하여 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 Hub에서 TLS 1.2 사용
디바이스와 통신할 때 TLS 1.2를 사용하도록 IoT Hub를 구성할 수 있습니다. 자세한 내용은 IoT Hub용 TLS 1.0 및 1.1 사용 중단을 참조하세요.
IoT Edge에서 TLS 1.2 사용
IoT Hub 및 DPS와 통신할 때 TLS 1.2를 사용하도록 IoT Edge 디바이스를 구성할 수 있습니다. 자세한 내용은 IoT Edge 설명서 페이지를 참조하세요.