X.509 인증서를 사용하여 IoT Edge for Linux on Window 디바이스 만들기 및 프로비전

적용 대상:IoT Edge 1.4 확인 표시 IoT Edge 1.4

Important

IoT Edge 1.5 LTS 및 IoT Edge 1.4는 지원되는 릴리스입니다. IoT Edge 1.4 LTS는 2024년 11월 12일에 수명이 종료됩니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

이 문서에서는 IoT Edge for Linux on Windows 디바이스를 등록하고 프로비전하기 위한 엔드투엔드 지침을 제공합니다.

IoT 허브에 연결하는 모든 디바이스에는 클라우드-디바이스 또는 디바이스-클라우드 통신을 추적하는 데 사용되는 디바이스 ID가 있습니다. IoT 허브 호스트 이름, 디바이스 ID, 디바이스에서 IoT Hub 인증에 사용하는 정보를 포함하는 연결 정보로 디바이스를 구성합니다.

이 문서의 단계는 단일 디바이스를 IoT 허브에 연결하는 수동 프로비저닝이라는 프로세스를 안내합니다. 수동 프로비저닝을 위해 IoT Edge 디바이스를 인증하는 두 가지 옵션이 있습니다.

  • 대칭 키: IoT Hub에서 새 디바이스 ID를 만드는 경우 서비스에서 두 개의 키를 만듭니다. 디바이스에 키 중 하나를 저장하고 인증 시 IoT Hub 키를 제시합니다.

    이 인증 방식을 사용하면 빠르게 시작할 수 있지만 안전하지 않습니다.

  • X.509 자체 서명: 두 개의 x.509 ID 인증서를 만들어 디바이스에 저장합니다. IoT Hub에서 새 디바이스 ID를 만들 때 두 인증서의 지문을 모두 제공합니다. 디바이스는 IoT Hub에 인증 시 인증서 하나를 제시되고 IoT Hub는 인증서가 지문과 일치하는지 확인합니다.

    이 인증 방식은 더 안전하며 프로덕션 시나리오에 권장됩니다.

이 문서에서는 X.509 인증서를 인증 방법으로 사용하는 방법을 설명합니다. 대칭 키를 사용하려면 대칭 키를 사용하여 IoT Edge for Linux on Windows 디바이스 만들기 및 프로비전을 참조하세요.

참고 항목

설정할 디바이스가 많고 각 디바이스를 수동으로 프로비저닝하지 않으려면 다음 문서 중 하나를 읽고 IoT Hub Device Provisioning Service에서 IoT Edge를 사용하는 방법을 알아보세요.

필수 조건

이 문서에서는 IoT Edge 디바이스를 등록하고 IoT Edge for Linux on Windows를 설치하는 방법을 설명합니다. 이러한 작업에는 작업을 수행하는 데 사용되는 다양한 필수 구성 요소와 유틸리티가 있습니다. 계속하기 전에 모든 필수 구성 요소가 충족되었는지 확인합니다.

디바이스 관리 도구

디바이스를 등록하는 단계에서 Azure Portal, Visual Studio Code 또는 Azure CLI를 사용할 수 있습니다. 각 유틸리티에는 자체 필수 조건이 있거나 설치해야 할 수 있습니다.

Azure 구독의 무료 또는 표준 IoT Hub.

디바이스 요구 사항

다음과 같은 최소 요구 사항을 충족하는 Windows 디바이스:

  • 시스템 요구 사항

    • Windows 101/11(Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 최신 누적 업데이트가 모두 설치된 Windows 10 및 Windows Server 2019 최소 빌드 17763입니다.
  • 하드웨어 요구 사항

    • 사용 가능한 최소 메모리: 1GB
    • 사용 가능한 최소 디스크 공간: 10GB
  • 가상화 지원

  • 네트워킹 지원

    • Windows Server에는 기본 스위치가 없습니다. EFLOW를 Windows Server 디바이스에 배포하려면 먼저 가상 스위치를 만들어야 합니다. 자세한 내용은 Windows에서 Linux용 가상 스위치 만들기를 참조하세요.
    • Windows 데스크톱 버전에는 EFLOW 설치에 사용할 수 있는 기본 스위치가 있습니다. 필요한 경우 고유한 사용자 지정 가상 스위치를 만들 수 있습니다.

Windows 배포의 Linux용 Azure IoT Edge에서 GPU 가속 Linux 모듈을 사용하려는 경우 고려해야 할 몇 가지 구성 옵션이 있습니다.

GPU 아키텍처에 따라 올바른 드라이버를 설치해야 하며 Windows 참가자 프로그램 빌드에 액세스해야 할 수도 있습니다. 구성 요구 사항을 확인하고 이러한 필수 조건을 충족하려면 Windows의 Linux용 Azure IoT Edge에 대한 GPU 가속을 참조하세요.

지금 시간을 내어 GPU 가속을 위한 필수 구성 요소를 충족시키세요. 설치 중에 GPU 가속을 원하는 경우 설치 프로세스를 다시 시작해야 합니다.

개발자 도구

Azure IoT Edge for Linux on Windows 설치 및 Linux 가상 머신 배포를 위한 대상 디바이스를 준비합니다.

  1. 대상 디바이스의 실행 정책을 AllSigned로 설정합니다. 다음 명령을 사용하여 관리자 권한 PowerShell 프롬프트에서 현재 실행 정책을 확인할 수 있습니다.

    Get-ExecutionPolicy -List
    

    local machine의 실행 정책이 AllSigned가 아닌 경우 다음을 사용하여 실행 정책을 설정할 수 있습니다.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Azure IoT Edge for Linux on Windows PowerShell 모듈에 대한 자세한 내용은 PowerShell 함수 참조를 확인하세요.

디바이스 ID 인증서 생성

X.509 인증서를 사용하여 수동으로 프로비저닝하려면 IoT Edge 버전 1.0.10 이상이 필요합니다.

X.509 인증서를 사용하여 IoT Edge 디바이스를 프로비저닝하는 경우에는 디바이스 ID 인증서를 사용합니다. 이 인증서는 IoT Edge 디바이스를 프로비저닝하고 Azure IoT Hub에서 디바이스를 인증하는 데만 사용됩니다. 다른 인증서에 서명하지 않는 리프 인증서입니다. 디바이스 ID 인증서는 IoT Edge 디바이스가 확인을 위해 모듈 또는 다운스트림 디바이스에 제시하는 CA(인증 기관) 인증서와는 별개입니다.

X.509 인증서 인증의 경우 각 디바이스의 인증 정보는 디바이스 ID 인증서에서 가져온 ‘지문’ 형태로 제공됩니다. 디바이스 등록 시 IoT Hub에 이 지문이 제공되어 서비스가 연결될 때 디바이스를 인식할 수 있습니다.

IoT Edge 디바이스에서 CA 인증서를 사용하는 방법에 대한 자세한 내용은 Azure IoT Edge에서 인증서를 사용하는 방법 이해를 참조하세요.

X.509를 사용한 수동 프로비저닝에는 다음 파일이 필요합니다.

  • .cer 또는 .pem 형식의 일치하는 프라이빗 키 인증서를 포함하는 두 개의 디바이스 ID 인증서. 인증서 회전을 위해서는 두 개의 디바이스 ID 인증서가 필요합니다. 모범 사례는 만료 날짜가 다른 두 개의 서로 다른 디바이스 ID 인증서를 준비하는 것입니다. 한 인증서가 만료되더라도 다른 인증서는 여전히 유효하며 만료된 인증서를 회전할 시간을 줍니다.

    인증서 및 키 파일 집합 하나가 IoT Edge 런타임에 제공됩니다. 디바이스 ID 인증서를 만들 때 IoT 허브의 디바이스에 원하는 디바이스 ID로 인증서 일반 이름(CN)을 설정합니다.

  • 디바이스 ID 인증서에서 가져온 지문. IoT Hub는 IoT Edge 디바이스를 등록할 때 두 개의 지문이 필요합니다. 등록에는 하나의 인증서만 사용할 수 있습니다. 단일 인증서를 사용하려면 디바이스 등록 시 기본 지문과 보조 지문 모두에 동일한 인증서 지문을 설정합니다.

    지문 값은 SHA-1 해시의 경우 40(16진수), SHA-256 해시의 경우 64(16진수)입니다. 디바이스 등록 시 IoT Hub에 두 지문이 모두 제공됩니다.

    인증서에서 지문을 검색하는 한 가지 방법은 다음 openssl 명령을 사용하는 것입니다.

    openssl x509 -in <certificate filename>.pem -text -fingerprint
    

    지문은 이 명령의 출력에 포함됩니다. 예시:

    SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
    

인증서가 없는 경우 IoT Edge 디바이스 기능을 테스트하기 위한 데모 인증서를 만들 수 있습니다. 해당 문서의 지침에 따라 인증서 만들기 스크립트를 설정하고, 루트 CA 인증서를 만들고, IoT Edge 디바이스 ID 인증서를 만듭니다. 테스트를 위해 단일 디바이스 ID 인증서를 만들고 IoT Hub에 디바이스를 등록할 때 기본 및 보조 지문 값 모두에 동일한 지문을 사용할 수 있습니다.

디바이스 등록

기본 설정에 따라 Azure Portal, Visual Studio Code 또는 Azure CLI를 사용하여 디바이스를 등록할 수 있습니다.

Azure Portal의 IoT 허브에서 IoT Edge 디바이스는 에지가 사용 설정되지 않은 IoT 디바이스와 별도로 만들어지고 관리됩니다.

  1. Azure Portal에 로그인하고 IoT Hub로 이동합니다.

  2. 왼쪽 창의 메뉴에서 디바이스를 선택한 다음, 디바이스 추가를 선택합니다.

  3. 디바이스 만들기 페이지에서 다음 정보를 입력합니다.

    • 설명 디바이스 ID를 만듭니다. 나중에 사용할 수 있도록 이 디바이스 ID를 기록해 두세요.
    • IoT Edge 디바이스 확인란을 선택합니다.
    • 인증 유형으로 X.509 자체 서명을 선택합니다.
    • 기본 및 보조 ID 인증서 지문을 제공합니다. 지문 값은 SHA-1 해시의 경우 40(16진수), SHA-256 해시의 경우 64(16진수)입니다. Azure Portal은 16진수 값만 지원합니다. 포털에 입력하기 전에 지문 값에서 열 구분 기호와 공백을 제거합니다. 예를 들어, D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12D268D9049F1A4D6AFD8477687BC633C032375112로 입력됩니다.

    테스트 중이고 하나의 인증서를 사용하려는 경우 기본 및 보조 지문 모두에 동일한 인증서를 사용할 수 있습니다.

  4. 저장을 선택합니다.

이제 디바이스가 IoT Hub에 등록되었으므로 IoT Edge 런타임의 설치 및 프로비전을 완료하는 데 사용하는 정보를 검색합니다.

등록된 디바이스 보기 및 프로비전 정보 검색

X.509 인증서 인증을 사용하는 디바이스는 IoT Edge 런타임의 설치 및 프로비저닝을 완료하기 위해 IoT 허브 이름, 디바이스 이름, 인증서 파일이 필요합니다.

IoT 허브에 연결된 에지 사용 디바이스는 디바이스 페이지에 나열되어 있습니다. 디바이스 유형 IoT Edge 디바이스별로 목록을 필터링할 수 있습니다.

IoT Edge 설치

대상 디바이스에 Windows의 Linux용 Azure IoT Edge를 배포합니다.

참고 항목

다음 PowerShell 프로세스에서는 Windows의 Linux용 IoT Edge를 로컬 디바이스에 배포하는 방법을 간략하게 설명합니다. PowerShell을 사용하여 원격 대상 디바이스에 배포하려면 원격 PowerShell을 사용하여 원격 디바이스에 대한 연결을 설정하고 해당 디바이스에서 이러한 명령을 원격으로 실행합니다.

  1. 관리자 권한 PowerShell 세션에서 대상 디바이스 아키텍처에 따라 다음 명령을 실행하여 IoT Edge for Linux on Windows를 다운로드합니다.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. IoT Edge for Linux on Windows를 디바이스에 설치합니다.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    설치 명령에 INSTALLDIR="<FULLY_QUALIFIED_PATH>"VHDXDIR="<FULLY_QUALIFIED_PATH>" 매개 변수를 추가하여 Windows의 Linux 설치 및 VHDX 디렉터리용 사용자 지정 IoT Edge를 지정할 수 있습니다. 예를 들어 D:\EFLOW 폴더를 설치에 사용하고 D:\EFLOW-VHDX를 VHDX에 사용하려는 경우 다음 PowerShell cmdlet을 사용할 수 있습니다.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. 대상 디바이스의 실행 정책이 아직 설정되지 않은 경우 AllSigned로 설정합니다. 현재 실행 정책을 확인하고 실행 정책을 AllSigned로 설정하는 명령에 대한 PowerShell 필수 구성 요소를 확인합니다.

  4. IoT Edge for Linux on Windows 배포를 만듭니다. 배포하면 Linux 가상 머신이 생성되고 IoT Edge 런타임이 자동으로 설치됩니다.

    Deploy-Eflow
    

    기본적으로 Deploy-Eflow 명령은 RAM 1GB, vCPU 코어 1개, 디스크 공간 16GB를 사용하여 Linux 가상 머신을 만듭니다. 그러나 VM에 필요한 리소스는 배포하는 워크로드에 따라 달라집니다. 워크로드를 지원하기에 충분 한 메모리가 없는 VM은 시작되지 않습니다.

    Deploy-Eflow 명령의 선택적 매개 변수를 사용하여 가상 컴퓨터의 사용 가능한 리소스를 사용자 지정할 수 있습니다. 이는 EFLOW를 최소 하드웨어 요구 사항이 있는 디바이스에 배포하는 데 필요합니다.

    예를 들어 아래 명령에서는 1개 vCPU 코어, 1GB RAM(MB 단위로 표시) 및 2GB 디스크 공간이 있는 가상 머신을 만듭니다.

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    사용 가능한 모든 선택적 매개 변수에 대한 자세한 내용은 Windows의 Linux용 IoT Edge용 PowerShell 함수를 참조하세요.

    Warning

    기본적으로 EFLOW Linux 가상 머신에는 DNS 구성이 없습니다. DHCP를 사용하는 배포에서는 DHCP 서버에서 전파하는 DNS 구성을 가져오려고 시도합니다. 인터넷 연결을 확인하려면 DNS 구성을 확인하세요. 자세한 내용은 AzEFLOW-DNS를 참조하세요.

    배포에 GPU를 할당하여 GPU 가속 Linux 모듈을 사용하도록 설정할 수 있습니다. 이러한 기능에 액세스하려면 Windows의 Linux용 Azure IoT Edge용 GPU 가속에 설명된 필수 구성 요소를 설치해야 합니다.

    GPU 통과를 사용하려면 gpuName, gpuPassthroughTypegpuCount 매개 변수를 Deploy-Eflow 명령에 추가합니다. 사용 가능한 모든 선택적 매개 변수에 대한 자세한 내용은 Windows의 Linux용 IoT Edge용 PowerShell 함수를 참조하세요.

    Warning

    하드웨어 디바이스 통과를 사용하도록 설정하면 보안 위험이 증가할 수 있습니다. Microsoft는 해당되는 경우 GPU 공급업체의 디바이스 완화 드라이버를 권장합니다. 자세한 내용은 개별 디바이스 할당을 사용하여 그래픽 디바이스 배포를 참조하세요.

  5. 'Y'를 입력하여 사용 조건에 동의합니다.

  6. 기본 설정에 따라 'O' 또는 'R'을 입력하여 선택적 진단 데이터를 설정하거나 해제합니다.

  7. 배포가 완료되면 PowerShell 창에 배포 성공이 보고됩니다.

    배포에 성공하면 메시지 끝에 ‘배포 성공’이라고 표시됨(PNG)

    배포에 성공하면 디바이스를 프로비전할 준비가 된 것입니다.

클라우드 ID를 사용한 디바이스 프로비전

클라우드 ID 및 인증 정보를 사용하여 디바이스를 설정할 준비가 되었습니다.

X.509 인증서를 사용하여 디바이스를 프로비전하려면 IoT 허브 이름, 디바이스 ID 및 Windows 호스트 머신의 ID 인증서프라이빗 키 에 대한 절대 경로가 필요합니다.

대상 디바이스에서 디바이스 ID 인증서와 일치하는 프라이빗 키를 준비합니다. 두 파일의 절대 경로를 알고 있습니다.

대상 디바이스의 관리자 권한 PowerShell 세션에서 다음 명령을 실행합니다. 자리 표시자 텍스트를 고유한 값으로 바꿉니다.

Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"

Provision-EflowVM 명령에 대한 자세한 내용은 Windows의 Linux용 IoT Edge용 PowerShell 함수를 참조하세요.

구성 성공 확인

IoT Edge for Linux on Windows가 IoT Edge 디바이스에 성공적으로 설치되고 구성되었는지 확인합니다.

  1. PowerShell 세션에서 다음 명령을 사용하여 IoT Edge for Linux on Windows 가상 머신에 로그인합니다.

    Connect-EflowVm
    

    참고 항목

    가상 머신에 SSH로 연결하도록 허용되는 유일한 계정은 가상 머신을 만든 사용자입니다.

  2. 로그인하면 다음 Linux 명령을 사용하여 실행되는 IoT Edge 모듈의 목록을 확인할 수 있습니다.

    sudo iotedge list
    
  3. IoT Edge 서비스 문제를 해결해야 하는 경우 다음 Linux 명령을 사용합니다.

    1. 서비스 로그를 검색합니다.

      sudo iotedge system logs
      
    2. check 도구를 사용하여 디바이스의 구성 및 연결 상태를 확인합니다.

      sudo iotedge check
      

    참고 항목

    새로 프로비전된 디바이스에서 IoT Edge Hub와 관련된 오류가 표시될 수 있습니다.

    × 프로덕션 준비: Edge Hub의 스토리지 디렉터리가 호스트 파일 시스템에 유지되고 있습니다. - 오류

    edgeHub 컨테이너의 현재 상태를 확인할 수 없습니다.

    IoT Edge Hub 모듈이 실행되고 있지 않으므로 새로 프로비저닝된 디바이스에서 이 오류가 예상됩니다. 오류를 해결하려면 IoT Hub에서 디바이스에 대한 모듈을 설정하고 배포를 만듭니다. 디바이스에 대한 배포를 만들면 IoT Edge Hub 모듈을 포함하여 디바이스에서 모듈이 시작됩니다.

새 IoT Edge 디바이스를 만들면 Azure Portal에 상태 코드 417 -- The device's deployment configuration is not set이 표시됩니다. 이 상태는 정상이며 디바이스가 모듈 배포를 수신할 준비가 되었음을 의미합니다.

IoT Edge for Linux on Windows 제거

디바이스에서 Azure IoT Edge for Linux on Windows 설치를 제거하려면 다음 명령을 사용합니다.

  1. Windows에서 설정 열기
  2. 프로그램 추가/제거 선택
  3. Azure IoT Edge 앱 선택
  4. 제거 선택

다음 단계