데모 인증서를 만들어 IoT Edge 디바이스 기능 테스트

적용 대상:IoT Edge 1.4 checkmark IoT Edge 1.4

Important

IoT Edge 1.4는 지원되는 릴리스입니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

IoT Edge 디바이스에는 런타임, 모듈 및 다운스트림 디바이스 간의 보안 통신용 인증서가 필요합니다. 필요한 인증서를 만들 수 있는 인증 기관이 없는 경우 데모 인증서를 사용하여 테스트 환경에서 IoT Edge 기능을 테스트해 볼 수 있습니다. 이 문서에서는 IoT Edge에서 테스트를 위해 제공하는 인증서 생성 스크립트의 기능을 설명합니다.

Warning

이러한 인증서는 30일 후에 만료되며 프로덕션 시나리오에서 사용할 수 없습니다.

모든 머신에서 인증서를 만든 다음, IoT Edge 디바이스에 복사하거나 IoT Edge 디바이스에서 직접 인증서를 생성할 수 있습니다.

필수 조건

Git이 설치된 개발 머신

테스트 인증서 스크립트 다운로드 및 작업 디렉터리 설정

GitHub의 IoT Edge 리포지토리에는 데모 인증서를 만드는 데 사용할 수 있는 인증서 생성 스크립트가 포함되어 있습니다. 이 섹션에서는 Windows 또는 Linux 환경의 컴퓨터에서 실행할 스크립트를 준비하는 방법에 대한 지침을 제공합니다.

Windows 디바이스에서 데모 인증서를 만들려면 OpenSSL을 설치한 다음 생성 스크립트를 복제하여 PowerShell에서 로컬로 실행되도록 설정해야 합니다.

OpenSSL 설치

인증서를 생성하는 데 사용하는 머신에서 Windows용 OpenSSL을 설치합니다. Windows 디바이스에 이미 OpenSSL을 설치한 경우 PATH 환경 변수에서 openssl.exe를 사용할 수 있는지 확인하세요.

다음 옵션을 포함하여 OpenSSL을 설치하는 몇 가지 방법이 있습니다.

  • 더 손쉬운 방법: 예를 들어 SourceForge의 OpenSSL에서 타사 OpenSSL 이진 파일을 다운로드하여 설치합니다. PATH 환경 변수에 openssl.exe에 대한 전체 경로를 추가합니다.

  • 권장 사항: 직접 또는 vcpkg를 통해 OpenSSL 소스 코드를 다운로드하고 머신에서 이진 파일을 빌드합니다. 아래에 나열된 지침은 vcpkg를 사용하여 간단한 단계를 통해 소스 코드를 다운로드하고, 컴파일하고, Windows 머신에 OpenSSL을 설치합니다.

    1. vcpkg를 설치하려는 디렉터리로 이동합니다. 지침에 따라 vcpkg를 다운로드하고 설치합니다.

    2. vcpkg가 설치되면 PowerShell 프롬프트에서 다음 명령을 실행하여 Windows x64용 OpenSSL 패키지를 설치합니다. 설치를 완료하는 데 일반적으로 약 5분이 걸립니다.

      .\vcpkg install openssl:x64-windows
      
    3. openssl.exe 파일을 호출할 수 있도록 <vcpkg path>\installed\x64-windows\tools\openssl을 PATH 환경 변수에 추가합니다.

PowerShell에서 스크립트 준비

Azure IoT Edge Git 리포지토리에는 테스트 인증서를 생성하는 데 사용할 수 있는 스크립트가 포함됩니다. 이 섹션에서는 IoT Edge 리포지토리를 복제하고 스크립트를 실행합니다.

  1. 관리자 모드에서 PowerShell 창을 엽니다.

  2. 데모 인증서를 생성하는 스크립트가 포함된 IoT Edge Git 리포지토리를 복제합니다. git clone 명령을 사용하거나 ZIP을 다운로드합니다.

    git clone https://github.com/Azure/iotedge.git
    
  3. 작업할 디렉터리를 만들고 인증서 스크립트를 복사합니다. 모든 인증서 및 키 파일은 이 디렉터리에 생성됩니다.

    mkdir wrkdir
    cd .\wrkdir\
    cp ..\iotedge\tools\CACertificates\*.cnf .
    cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
    

    리포지토리를 ZIP으로 다운로드한 경우 폴더 이름은 iotedge-master이고 나머지 경로는 동일합니다.

  4. 스크립트를 실행하도록 PowerShell을 활성화합니다.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. 스크립트에서 사용된 함수를 PowerShell의 글로벌 네임스페이스로 가져옵니다.

    . .\ca-certs.ps1
    

    PowerShell 창에는 이 스크립트에 의해 생성된 인증서는 테스트 목적으로만 사용되고 프로덕션 시나리오에서는 사용할 수 없다는 경고가 표시됩니다.

  6. OpenSSL이 올바르게 설치되었는지 확인하고 기존 인증서와 이름이 중복되지 않는지 확인합니다. 문제가 있는 경우 스크립트 출력값은 시스템에서 이를 해결하는 방법을 설명합니다.

    Test-CACertsPrerequisites
    

루트 CA 인증서 만들기

이 스크립트를 실행하여 이 문서의 각 단계에 필요한 루트 CA를 생성합니다.

루트 CA 인증서는 IoT Edge 시나리오를 테스트하기 위한 다른 모든 데모 인증서를 만드는 데 사용됩니다. 동일한 루트 CA 인증서를 계속 사용하여 여러 IoT Edge 및 다운스트림 디바이스에 대한 데모 인증서를 만들 수 있습니다.

작업 폴더에 루트 CA 인증서가 이미 있는 경우에는 새 인증서를 만들지 마세요. 새 루트 CA 인증서는 이전 버전을 덮어쓰고 이전 인증서에서 만든 다운스트림 인증서의 작동이 중단됩니다. 여러 루트 CA 인증서를 원하는 경우 별도의 폴더에서 관리해야 합니다.

  1. 인증서 생성 스크립트를 배치한 작업 디렉터리 wrkdir로 이동합니다.

  2. 루트 CA 인증서를 만들고 중간 인증서에 서명하도록 합니다. 인증서는 모두 작업 디렉터리에 저장됩니다.

    New-CACertsCertChain rsa
    

    이 스크립트 명령은 여러 인증서 및 키 파일을 만들지만, 아티클이 루트 CA 인증서를 요청하는 경우 다음 파일을 사용합니다.

    certs\azure-iot-test-only.root.ca.cert.pem

다음 섹션에 설명된 대로 IoT Edge 디바이스 및 다운스트림 디바이스에 대한 추가 인증서를 만들려면 먼저 이 인증서가 있어야 합니다.

IoT Edge 디바이스에 대한 ID 인증서 만들기

X.509 인증서 인증을 사용하려는 경우 IoT Edge 디바이스 ID 인증서를 사용하여 IoT Edge 디바이스를 프로비저닝합니다. IoT Hub 또는 DPS에 인증하는 데 대칭 키를 사용하는 경우 이러한 인증서가 필요하지 않으며 이 섹션을 건너뛸 수 있습니다.

이러한 인증서는 Azure IoT Hub DPS(Device Provisioning Service)를 통해 수동 프로비저닝 또는 자동 프로비저닝을 사용하는지에 따라 작동합니다.

디바이스 ID 인증서는 IoT Edge 디바이스에서 구성 파일의 프로비전 섹션으로 이동합니다.

  1. 인증서 생성 스크립트 및 루트 CA 인증서가 있는 작업 디렉터리 wrkdir로 이동합니다.

  2. 다음 명령을 사용하여 IoT Edge 디바이스 ID 인증서 및 프라이빗 키를 만듭니다.

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    이 명령에 전달하는 이름은 IoT Hub에서 IoT Edge 디바이스의 디바이스 ID가 됩니다.

  3. 새 디바이스 ID 명령은 여러 인증서 및 키 파일을 만듭니다.

    Type 파일 설명
    디바이스 ID 인증서 certs\iot-edge-device-identity-<device-id>.cert.pem 이전에 생성된 중간 인증서로 서명되었습니다. ID 인증서만 포함합니다. DPS 개별 등록 또는 IoT Hub 프로비저닝에 대한 구성 파일에서 지정합니다.
    전체 체인 인증서 certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem 중간 인증서를 포함한 전체 인증서 체인을 포함합니다. 그룹 등록 프로비저닝을 위해 DPS에 표시할 IoT Edge 구성 파일에서 지정합니다.
    프라이빗 키 private\iot-edge-device-identity-<device-id>.key.pem 디바이스 ID 인증서와 연결된 프라이빗 키입니다. DPS 또는 IoT Hub에 대해 일종의 인증서 인증(지문 또는 CA)을 사용하는 한 구성 파일에서 지정해야 합니다.

에지 CA 인증서 만들기

에지 CA 인증서는 IoT Edge 디바이스가 다운스트림 디바이스에 대한 ID를 확인하는 방법이기 때문에 게이트웨이 시나리오에도 필요합니다. 다운스트림 디바이스를 IoT Edge에 연결하지 않는 경우 이 섹션을 건너뛸 수 있습니다.

에지 CA 인증서는 디바이스에서 실행되는 모듈에 대한 인증서를 만드는 작업도 담당하지만 에지 CA가 구성되지 않은 경우 IoT Edge 런타임에서 임시 인증서를 만들 수 있습니다. 에지 CA 인증서는 IoT Edge 디바이스에서 config.toml 파일의 에지 CA 섹션으로 이동합니다. 자세히 알아보려면 Azure IoT Edge에서 인증서를 사용하는 방법 이해를 참조하세요.

  1. 인증서 생성 스크립트 및 루트 CA 인증서가 있는 작업 디렉터리 wrkdir로 이동합니다.

  2. 다음 명령을 사용하여 IoT Edge CA 인증서 및 프라이빗 키를 만듭니다. CA 인증서의 이름을 입력합니다. New-CACertsEdgeDevice 명령에 전달되는 이름은 구성 파일의 호스트 이름 매개 변수 또는 IoT Hub의 디바이스 ID와 달라야 합니다.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. 이 명령은 여러 인증서 및 키 파일을 만듭니다. 다음 인증서 및 키 쌍을 IoT Edge 디바이스에 복사하고 구성 파일에서 참조해야 합니다.

    • certs\iot-edge-device-ca-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-ca-<CA cert name>.key.pem

다운스트림 디바이스 인증서 만들기

이러한 인증서는 게이트웨이 시나리오에 대한 다운스트림 IoT 디바이스를 설정하는 데 필요하며 IoT Hub 또는 DPS에서 X.509 인증을 사용하려고 합니다. 대칭 키 인증을 사용하려는 경우에는 다운스트림 디바이스에 대한 인증서를 만들 필요가 없으며 이 섹션을 건너뛸 수 있습니다.

X.509 인증서를 사용하여 IoT 디바이스를 인증하는 방법에는 자체 서명된 인증서를 사용하거나 CA(인증 기관) 서명 인증서를 사용하는 두 가지 방법이 있습니다.

  • X.509 자체 서명 인증(지문 인증이라고도 함)의 경우 IoT 디바이스에 배치할 새 인증서를 만들어야 합니다. 이러한 인증서에는 인증을 위해 IoT Hub와 공유하는 지문이 있습니다.
  • X.509 CA(인증 기관) 서명 인증의 경우 IoT 디바이스에 대한 인증서에 서명하는 데 사용하는 IoT Hub 또는 DPS에 등록된 루트 CA 인증서가 필요합니다. 루트 CA 인증서 또는 해당 중간 인증서에서 발급한 인증서를 사용하는 모든 디바이스는 디바이스에서 전체 체인을 제공하는 한 인증할 수 있습니다.

인증서 생성 스크립트를 통해 이러한 인증 시나리오 중 하나를 테스트하는 데모 인증서를 만들 수 있습니다.

자체 서명된 인증서

자체 서명된 인증서를 사용하여 IoT 디바이스를 인증하는 경우 솔루션에 대한 루트 CA 인증서를 기반으로 디바이스 인증서를 만들어야 합니다. 그런 다음, IoT Hub에 제공할 인증서에서 16진수 “지문”을 검색합니다. IoT 디바이스에는 IoT Hub를 사용하여 인증할 수 있도록 디바이스 인증서의 복사본도 필요합니다.

  1. 인증서 생성 스크립트 및 루트 CA 인증서가 있는 작업 디렉터리 wrkdir로 이동합니다.

  2. 다운스트림 디바이스에 대해 두 개의 인증서(기본 및 보조)를 만듭니다. 사용하기 쉬운 명명 규칙의 예로는 IoT 디바이스 이름으로 인증서를 만든 다음 기본 또는 보조 레이블을 만드는 것입니다. 예시:

    New-CACertsDevice "<device ID>-primary"
    New-CACertsDevice "<device ID>-secondary"
    

    이 스크립트 명령은 여러 인증서 및 키 파일을 만듭니다. 다음 인증서 및 키 쌍을 다운스트림 IoT 디바이스에 복사하여 IoT Hub에 연결하는 애플리케이션에서 참조해야 합니다.

    • certs\iot-device-<device ID>-primary-full-chain.cert.pem
    • certs\iot-device-<device ID>-secondary-full-chain.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pem
    • certs\iot-device-<device ID>-secondary.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pfx
    • certs\iot-device-<device ID>-secondary.cert.pfx
    • private\iot-device-<device ID>-primary.key.pem
    • private\iot-device-<device ID>-secondary.key.pem
  3. 각 인증서에서 SHA1 지문(IoT Hub 컨텍스트에서는 지문이라고 함)을 검색합니다. 지문은 40개의 16진수 문자열입니다. 다음 openssl 명령을 사용하여 인증서를 확인하고 지문을 찾습니다.

    Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
    

    이 명령을 기본 인증서 및 보조 인증서에 대해 한 번씩 두 번 실행합니다. 자체 서명된 X.509 인증서를 사용하여 새 IoT 디바이스를 등록할 때 두 인증서의 지문을 제공합니다.

CA 서명 인증서

CA 서명된 인증서를 사용하여 IoT 디바이스를 인증하는 경우 솔루션에 대한 루트 CA 인증서를 IoT Hub에 업로드해야 합니다. IoT Hub로 인증할 수 있도록 IoT 디바이스에 넣을 디바이스 인증서를 만들기 위해 동일한 루트 CA 인증서를 사용합니다.

이 섹션의 인증서는 IoT Hub X.509 인증서 자습서 시리즈의 단계를 위한 것입니다. 이 시리즈의 소개는 공개 키 암호화 및 X.509 공개 키 인프라 이해를 참조하세요.

  1. 작업 디렉터리certs\azure-iot-test-only.root.ca.cert.pem의 루트 CA 인증서 파일을 IoT Hub에 업로드합니다.

  2. 자동 확인이 선택되지 않은 경우 루트 CA 인증서를 소유하고 있는지 확인하기 위해 Azure Portal에서 제공된 코드를 사용합니다.

    New-CACertsVerificationCert "<verification code>"
    
  3. 다운스트림 디바이스에 대한 인증서 체인을 만듭니다. 등록된 디바이스 ID를 IoT Hub에 사용합니다.

    New-CACertsDevice "<device id>"
    

    이 스크립트 명령은 여러 인증서 및 키 파일을 만듭니다. 다음 인증서 및 키 쌍을 다운스트림 IoT 디바이스에 복사하여 IoT Hub에 연결하는 애플리케이션에서 참조해야 합니다.

    • certs\iot-device-<device id>.cert.pem
    • certs\iot-device-<device id>.cert.pfx
    • certs\iot-device-<device id>-full-chain.cert.pem
    • private\iot-device-<device id>.key.pem