X.509 디바이스 인증서 배포 방법

IoT 솔루션의 수명 주기 동안 인증서를 배포해야 합니다. 인증서를 배포하는 주된 이유 두 가지는 보안 위반 및 인증서 만료입니다.

인증서 배포는 위반 발생 시 시스템을 보호할 수 있는 보안 모범 사례입니다. 보안 위험 가정 방법론의 일환으로 Microsoft는 예방 조치와 함께 사후 보안 프로세스의 필요성을 강조하고 있습니다. 디바이스 인증서 배포는 이러한 보안 프로세스의 일환으로 포함되어야 합니다. 인증서의 배포 빈도는 솔루션의 보안 요구 사항에 따라 달라집니다. 중요도 높은 데이터가 포함된 솔루션을 사용하는 고객은 매일 인증서를 배포하기도 하며 어떤 고객은 2년마다 인증서를 배포할 수도 있습니다.

디바이스 인증서 배포에는 디바이스 및 IoT Hub에 저장된 인증서 업데이트가 포함됩니다. 이후 디바이스는 DPS(디바이스 프로비저닝 서비스)를 통해 일반 프로비전을 사용하여 IoT Hub로 스스로 다시 프로비전합니다.

새 인증서 가져오기

몇 가지 방법으로 IoT 디바이스에 대한 새 인증서를 가져올 수 있습니다. 여기에는 디바이스 팩토리에서 인증서 가져오기, 자체 인증서 생성, 타사가 인증서 만들기를 관리하게 지정이 포함됩니다.

인증서는 상호 서명을 통해 루트 CA 인증서에서 리프 인증서까지 신뢰 체인을 형성합니다. 서명 인증서는 신뢰 체인의 끝에서 리프 인증서 서명에 사용되는 인증서입니다. 서명 인증서는 루트 CA 인증서이거나 신뢰 체인의 중간 인증서가 될 수 있습니다. 자세한 내용은 X.509 인증서를 참조하세요.

두 가지 방법으로 서명 인증서를 가져올 수 있습니다. 첫 번째 방법은 프로덕션 시스템에 권장되는 방법으로, 루트 CA(인증 기관)에서 서명 인증서를 구매하는 것입니다. 이렇게 하면 보안이 신뢰할 수 있는 원본에 연결됩니다.

두 번째 방법은 OpenSSL와 같은 도구를 사용하여 사용자 고유의 X.509 인증서를 만드는 것입니다. 이 방법은 X.509 인증서 테스트에 적합하지만 보안과 관련한 보증이 거의 없습니다. 자체 CA 공급자 역할을 준비하는 것이 아니라면 이 방법은 테스트 목적으로만 사용하는 것이 좋습니다.

디바이스에 인증서 배포

디바이스의 인증서는 항상 HSM(하드웨어 보안 모듈)처럼 안전한 곳에 저장되어야 합니다. 디바이스 인증서 배포 방법은 처음 디바이스에서 만들어 설치한 방법에 따라 달라집니다.

타사에서 인증서를 가져온 경우 해당하는 인증서 배포 방법을 살펴봐야 합니다. 준비된 프로세스가 포함되어 있거나 별도의 서비스를 제공할 수 있습니다.

자체 디바이스 인증서를 관리할 경우 인증서 업데이트를 위한 자체 파이프라인을 작성해야 합니다. 이전 리프 인증서와 새 리프 인증서가 동일한 CN(공통 이름)을 갖는지 확인합니다. 동일한 CN을 통해 디바이스는 중복 등록 레코드를 만들지 않고 스스로 다시 프로비전할 수 있습니다.

디바이스에 새 인증서를 설치하는 메커니즘에는 종종 다음 방법 중 하나가 포함됩니다.

  • 영향을 받는 디바이스를 트리거하여 새 CSR(인증서 서명 요청)을 PKI CA(인증 기관)에 보낼 수 있습니다. 이 경우 각 디바이스는 CA에서 직접 새 디바이스 인증서를 다운로드할 수 있습니다.

  • 각 디바이스에서 CSR을 유지하고 이를 사용하여 PKI CA에서 새 디바이스 인증서를 가져올 수 있습니다. 이 경우 Device Update for IoT Hub와 같은 보안 OTA 업데이트 서비스를 사용하여 펌웨어 업데이트의 각 디바이스에 새 인증서를 푸시해야 합니다.

DPS의 인증서 롤

디바이스 인증서를 수동으로 IoT Hub에 추가할 수 있습니다. Device Provisioning Service 인스턴스를 사용하여 인증서를 자동화할 수도 있습니다. 이 문서에서는 디바이스 프로비저닝 서비스 인스턴스를 사용하여 자동 프로비전을 지원한다고 가정합니다.

디바이스가 자동 프로비전을 통해 처음으로 프로비전된 경우 부팅하고 프로비전 서비스에 연결합니다. 프로비전 서비스는 디바이스의 리프 인증서를 자격 증명으로 사용하여 IoT Hub에서 디바이스 ID를 만들기 전에 ID 검사를 수행하여 응대합니다. 그러면 프로비전 서비스가 할당된 IoT Hub를 디바이스에게 알리고, 디바이스가 리프 인증서를 사용하여 해당 IoT Hub에 인증 및 연결합니다.

새 리프 인증서가 디바이스에 배포되면 새 인증서를 사용하여 연결하므로 더 이상 IoT Hub에 연결할 수 없습니다. IoT Hub는 이전 인증서가 있는 디바이스만 인식합니다. 디바이스의 연결 시도 결과는 "권한 없음" 연결 오류입니다. 이 오류를 해결하려면 디바이스의 새 리프 인증서에 부합하게 디바이스에 대한 등록 항목을 업데이트해야 합니다. 그러면 디바이스가 다시 프로비전될 때 프로비전 서비스가 IoT Hub 디바이스 레지스트리 정보를 필요에 따라 업데이트할 수 있습니다.

이 연결 실패의 가능한 예외 하나는 프로비전서비스에서 디바이스에 대해 등록 그룹을 만드는 시나리오입니다. 이 상황에서는 디바이스의 인증서 신뢰 체인에 루트 또는 중간 인증서를 배포하지 않는 경우, 새 인증서가 등록 그룹에 정의된 신뢰 체인의 일부일 때 디바이스가 인식됩니다. 이 시나리오는 보안 위반에 대한 조치로 발생하며 최소한 위반된 것으로 간주되는 그룹의 특정 디바이스 인증서를 허용하지 않아야 합니다. 자세한 내용은 등록 그룹에서 특정 디바이스 허용하지 않음을 참조하세요

등록 항목 업데이트의 처리 방법은 개별 등록 또는 그룹 등록의 사용 여부에 따라 다릅니다. 또한 권장 절차도 인증서 배포의 원인이 보안 위반인가 또는 인증서 만료인가에 따라 달라집니다. 다음 섹션에서는 이러한 업데이트의 처리 방법을 설명합니다.

개별 등록에 대한 인증서 롤

보안 위반에 대응하여 인증서를 롤링하는 경우 손상된 인증서를 즉시 삭제해야 합니다.

인증서 만료를 처리하기 위해 인증서를 배포하는 경우 다음과 같이 보조 인증서 구성을 사용하여 프로비전을 수행하는 디바이스에서 가동 중지 시간을 줄입니다. 나중에 보조 인증서가 만료 시점이 가까워져 롤링이 필요한 경우 기본 구성을 사용하도록 전환할 수 있습니다. 기본 인증서와 보조 인증서를 이런 식으로 전환하면 프로비전을 수행하는 디바이스에서 가동 중지 시간이 줄어듭니다.

등록된 인증서에 대한 등록 항목 업데이트는 등록 관리 페이지에서 수행됩니다. 이 페이지에 액세스하려면 다음 단계를 따르세요.

  1. Azure Portal에 로그인하고 디바이스에 대한 등록 항목이 있는 Device Provisioning Service 인스턴스로 이동합니다.

  2. 등록 관리를 선택합니다.

    Azure Portal 등록 관리 페이지를 보여 주는 스크린샷.

  3. 개별 등록 탭을 선택하고 목록에서 등록 ID 항목을 선택합니다.

  4. 기존 인증서를 삭제하려면 기본/보조 인증서 제거 또는 바꾸기 확인란을 선택합니다. 파일 폴더 아이콘을 선택하여 새 인증서를 찾아 업로드합니다.

    인증서가 손상된 경우 가능한 한 빨리 제거해야 합니다.

    인증서 중 하나가 만료에 가까워지면 두 번째 인증서가 해당 날짜 후에도 계속 활성화되는 한 인증서를 그대로 유지할 수 있습니다.

    인증서를 제거하고 새 인증서를 업로드하는 방법을 보여 주는 스크린샷.

  5. 작업을 마쳤으면 저장을 선택합니다.

  6. 손상된 인증서가 프로비전 서비스에서 제거된 후, IoT 허브에 대한 디바이스 등록이 존재하는 한 인증서를 계속 사용하여 IoT 허브에 디바이스를 연결할 수 있습니다. 이 문제는 두 가지 방법으로 해결할 수 있습니다.

    첫 번째 방법은 수동으로 IoT 허브로 이동하여 손상된 인증서와 연결된 디바이스 등록을 즉시 제거하는 것입니다. 그런 다음 업데이트된 인증서로 디바이스가 다시 프로비전되면 새 디바이스 등록이 만들어집니다.

    두 번째 방법은 다시 프로비전 지원을 사용하여 디바이스를 동일한 IoT 허브로 다시 프로비전하는 것입니다. 이 방법은 IoT Hub에서 디바이스 등록을 위해 인증서를 교체하는 데 사용할 수 있습니다. 자세한 내용은 디바이스를 다시 프로비전하는 방법을 참조하세요.

등록 그룹에 대한 인증서 롤

보안 위반에 대응하여 그룹 등록을 업데이트하려면 손상된 루트 CA 또는 중간 인증서를 즉시 삭제해야 합니다.

인증서 만료를 처리하기 위해 인증서를 배포하는 경우 다음과 같이 보조 인증서 구성을 사용하여 프로비전을 수행하는 디바이스에 가동 중지 시간이 없도록 합니다. 나중에 보조 인증서도 만료 시점이 가까워져 배포가 필요한 경우 기본 구성을 사용하도록 전환할 수 있습니다. 기본 및 보조 인증서를 이런 식으로 회전하면 프로비전을 수행하는 디바이스에서 가동 중지 시간이 없게 됩니다.

루트 CA 인증서 업데이트

  1. Device Provisioning Service instance 탐색 메뉴의 설정 섹션에서 인증서를 선택합니다.

    인증서 페이지를 보여 주는 스크린샷.

  2. 목록에서 손상되었거나 만료된 인증서를 선택한 다음 삭제를 선택합니다. 인증서 이름을 입력하여 삭제를 확인하고 확인을 클릭합니다.

  3. 확인된 CA 인증서 구성에서 설명한 단계에 따라 새 루트 CA 인증서를 추가 및 확인합니다.

  4. Device Provisioning Service 인스턴스 탐색 메뉴의 설정 섹션에서 등록 관리를 선택하고 등록 그룹 탭을 선택합니다.

  5. 목록에서 등록 그룹 이름을 선택합니다.

  6. X.509 인증서 설정 섹션에서 새 루트 CA 인증서를 선택하여 손상된 인증서 또는 만료된 인증서를 바꾸거나 보조 인증서로 추가합니다.

    등록 그룹에 대해 업로드된 새 인증서 선택을 보여 주는 스크린샷.

  7. 저장을 선택합니다.

  8. 손상된 인증서가 프로비전 서비스에서 제거된 후, IoT 허브에 대한 디바이스 등록이 존재하는 한 인증서를 계속 사용하여 IoT 허브에 디바이스를 연결할 수 있습니다. 이 문제는 두 가지 방법으로 해결할 수 있습니다.

    첫 번째 방법은 수동으로 IoT 허브로 이동하여 손상된 인증서와 연결된 디바이스 등록을 즉시 제거하는 것입니다. 그런 다음 업데이트된 인증서로 디바이스를 다시 프로비전하면 각 디바이스마다 새 디바이스 등록이 만들어집니다.

    두 번째 방법은 다시 프로비전 지원을 사용하여 디바이스를 동일한 IoT 허브로 다시 프로비전하는 것입니다. 이 방법은 IoT Hub에서 디바이스 등록을 위해 인증서를 교체하는 데 사용할 수 있습니다. 자세한 내용은 디바이스를 다시 프로비전하는 방법을 참조하세요.

중간 인증서 업데이트

  1. Device Provisioning Service 인스턴스 탐색 메뉴의 설정 섹션에서 등록 관리를 선택하고 등록 그룹 탭을 선택합니다.

  2. 목록에서 그룹 이름을 선택합니다.

  3. 기존 인증서를 삭제하려면 기본/보조 인증서 제거 또는 바꾸기 확인란을 선택합니다. 파일 폴더 아이콘을 선택하여 새 인증서를 찾아 업로드합니다.

    인증서가 손상된 경우 가능한 한 빨리 제거해야 합니다.

    인증서 중 하나가 만료에 가까워지면 두 번째 인증서가 해당 날짜 후에도 계속 활성화되는 한 인증서를 그대로 유지할 수 있습니다.

    각 중간 인증서는 이미 프로비전 서비스에 추가된 인증된 루트 CA 인증서로 서명해야 합니다. 자세한 내용은 X.509 인증서를 참조하세요.

    등록 그룹에 대한 중간 인증서 바꾸기를 보여 주는 스크린샷.

  4. 손상된 인증서가 프로비전 서비스에서 제거된 후, IoT 허브에 대한 디바이스 등록이 존재하는 한 인증서를 계속 사용하여 IoT 허브에 디바이스를 연결할 수 있습니다. 이 문제는 두 가지 방법으로 해결할 수 있습니다.

    첫 번째 방법은 수동으로 IoT 허브로 이동하여 손상된 인증서와 연결된 디바이스 등록을 즉시 제거하는 것입니다. 그런 다음 업데이트된 인증서로 디바이스를 다시 프로비전하면 각 디바이스마다 새 디바이스 등록이 만들어집니다.

    두 번째 방법은 다시 프로비전 지원을 사용하여 디바이스를 동일한 IoT 허브로 다시 프로비전하는 것입니다. 이 방법은 IoT Hub에서 디바이스 등록을 위해 인증서를 교체하는 데 사용할 수 있습니다. 자세한 내용은 디바이스를 다시 프로비전하는 방법을 참조하세요.

디바이스 다시 프로비전

인증서가 디바이스와 디바이스 프로비저닝 서비스에 모두 배포된 후에는 디바이스가 디바이스 프로비저닝 서비스에 연결하여 스스로 다시 프로비전할 수 있습니다.

디바이스가 다시 프로비전하도록 프로그래밍하는 한 가지 쉬운 방법은 디바이스가 IoT Hub 연결을 시도하다가 "권한 없음" 오류를 수신하면 프로비전 서비스에 연결하여 프로비전 흐름을 진행하게 프로그래밍하는 것입니다.

다른 방법은 구 인증서와 새 인증서를 모두 짧게 겹치는 시간 동안 유효하게 하고 IoT Hub를 사용하여 프로비전 서비스를 통해 스스로를 다시 등록하여 IoT Hub 연결 정보를 업데이트하는 명령을 디바이스에게 보내는 것입니다. 각 디바이스는 서로 다른 명령을 처리할 수 있으므로 명령이 호출되었을 때 수행할 작업을 디바이스가 알 수 있게 프로그래밍해야 합니다. 여러 가지 방법으로 IoT Hub를 통해 디바이스에 명령할 수 있고, 직접 메서드 또는 작업을 통해 프로세스를 시작하는 것이 좋습니다.

다시 프로비전이 완료되면 디바이스가 새 인증서를 사용하여 IoT Hub에 연결할 수 있습니다.

인증서 허용 안 함

보안 위반에 대한 대처로 디바이스 인증서를 허용하지 않아야 할 수 있습니다. 디바이스 인증서를 허용하지 않으려면 대상 디바이스/인증서에 대한 등록 항목을 사용하지 않게 설정합니다. 자세한 내용은 등록 취소 관리 문서에서 디바이스 허용하지 않기를 참조하세요.

인증서가 사용하지 않는 등록 항목의 일부가 되면 다른 등록 항목의 일부로 사용하게 설정되었다 하더라도 해당 인증서를 사용하는 IoT Hub를 통한 모든 등록 시도가 실패합니다.

다음 단계

  • 디바이스 프로비저닝 서비스의 X.509 인증서에 대한 자세한 내용은 X.509 인증서 증명을 참조하세요.
  • Azure IoT Hub Device Provisioning Service를 사용하여 X.509 CA 인증서에 대해 소유 증명을 수행하는 방법은 인증서 확인 방법을 참조하세요.
  • 포털을 사용하여 등록 그룹을 만드는 방법에 대한 자세한 내용은 Azure Portal에서 디바이스 등록 관리를 참조하세요.