다음을 통해 공유


인증서 수명 주기 및 갱신

클라이언트 인증서 키 쌍 및 CA 인증서는 정기적으로 만료됩니다. 네트워크 인프라 및 디바이스는 인증서 만료를 처리하고 연결 끊김 없이 새 인증서를 표시할 수 있어야 합니다. RADIUS 서버 인증에 사용되는 루트 CA 인증서와 디바이스 인증에 사용되는 클라이언트 인증서를 업데이트하려면 다른 접근 방식이 필요합니다.

주의

인증서 ID는 시스템 전체이므로 az sphere 명령 또는 새 인증서를 추가하는 함수 호출은 이전 명령 또는 함수 호출에 의해 추가된 인증서를 덮어쓸 수 있으므로 네트워크 연결 오류가 발생할 수 있습니다. 명확한 인증서 업데이트 절차를 개발하고 인증서 ID를 신중하게 선택하는 것이 좋습니다.

Azure Sphere 에서 인증서 ID를 사용하는 방법에 대한 자세한 내용은 인증서 ID를 참조하세요.

루트 CA 인증서 업데이트

CA 인증서는 RADIUS 서버에서 인증 인증서의 루트 CA입니다. CA 인증서가 만료되거나 서버의 PKI가 변경되는 경우(예: 서버가 다른 인증 기관에서 새 루트 CA를 획득하는 경우) Azure Sphere 디바이스는 더 이상 RADIUS 인증 서버를 인증할 수 없습니다. 그러나 디바이스는 계속 작동해야 합니다.

일반적인 무선 네트워크에서는 "나이프 에지" 컷오버를 수행할 수 없습니다. 즉, 루트 CA가 잘못되면 즉시 모든 Azure Sphere 디바이스를 업데이트할 수 없습니다. 중요한 순간에 디바이스가 오프라인 상태일 수 있거나 시간 유지 정확도는 설치마다 다를 수 있습니다. 필요한 경우 새 인증서를 사용할 준비가 되도록 상위 수준 애플리케이션은 현재 인증서가 만료되거나 변경되기 전에 새 루트 CA 인증서를 가져올 수 있어야 합니다.

권장되는 방법은 기존 네트워크와 구성이 동일하지만 새 루트 CA 인증서를 사용하는 두 번째 네트워크를 만들고 사용하도록 설정하는 것입니다. 원래 네트워크에서 기존 루트 CA 인증서가 실패하면 OS는 자동으로 두 번째 네트워크에 연결하려고 시도합니다. 그런 다음 애플리케이션은 원래 네트워크의 인증서를 새 루트 CA로 바꾸고 두 번째 네트워크를 삭제할 수 있습니다. 그런 다음 디바이스는 이제 새 루트 CA가 있는 원래 네트워크를 사용하여 연결할 수 있습니다. 다음 그림에서는 이 방법을 요약합니다.

루트 CA 인증서를 업데이트하는 애플리케이션 흐름

상위 수준 애플리케이션은 루트 CA 인증서에 대한 업데이트를 원활하게 처리하려면 다음 단계를 수행해야 합니다.

  1. 일반 작업의 일부로 애플리케이션은 형식 WifiConfig_Security_Wpa2_EAP_TLS의 Network1을 구성합니다. 이 네트워크는 디바이스의 클라이언트 인증서와 RADIUS 서버의 원래 루트 CA인 루트 CA1에 연결됩니다.

  2. RootCA가 만료되기 약 90일 전에 디바이스는 RADIUS 서버에 대한 새 루트 CA 인증서가 곧 필요하다는 클라우드-디바이스 알림을 받습니다. 네트워크 관리자 또는 다른 운영자가 알림을 트리거할 수 있습니다. 가능한 알림 메커니즘에는 Azure IoT Hub 또는 Azure IoT Central 클라우드-디바이스 메시지가 포함됩니다.

    네트워크 관리자는 RADIUS 서버에서 인증서를 업데이트하고 Azure Sphere 디바이스가 적절하게 업데이트되도록 해야 합니다.

  3. 앱은 새 루트 CA를 획득하고 CertStore_InstallRootCACertificate 호출하여 루트 CA2로 저장합니다.

  4. 앱은 WifiConfig_AddDuplicateNetwork 호출하여 Network1 구성을 복제하여 새 네트워크 Network2를 만듭니다. 그런 다음 루트 CA2를 네트워크 2에 연결하고 Network2를 사용하도록 설정합니다. 디바이스에서 Network2를 사용하도록 설정하고 인터넷에 연결할 수 있는 경우 Network1을 사용할 수 없는 경우 디바이스에서 사용합니다.

  5. 앱은 WifiConfig_GetConnectedNetworkId 호출하여 디바이스가 연결된 네트워크를 확인하여 매일 폴링합니다.

    연결된 네트워크의 일일 검사 실패하면 서버 또는 디바이스 쪽의 인증서 문제 또는 다른 문제로 인해 오류가 발생할 수 있습니다. 도움말 은 네트워크 문제 해결 을 참조하세요.

    디바이스가 Network1에 연결된 경우 인증서가 아직 만료되지 않았고 모든 것이 제대로 작동했음을 의미합니다. 앱은 디바이스가 Network2에 연결할 때까지 이 단계를 반복합니다.

    디바이스가 Network2에 연결된 경우 이는 이전 인증서가 만료되고, 업데이트된 PKI가 RADIUS 서버에 설정되고, 디바이스가 루트 CA2를 사용하여 서버를 인증할 수 있음을 의미합니다.

  6. 디바이스가 Network2에서 제대로 작동하면 앱이 네트워크 구성에 대한 변경 내용을 완료합니다.

    • CertStore_MoveCertificate 호출하여 루트 CA2의 이름을 루트 CA1로 바꿉니다. 이 함수는 만료된 루트 CA1을 루트 CA2의 내용으로 덮어씁니다.
    • WifiConfig_ReloadConfig 호출하여 Network1 구성을 다시 로드합니다. 이제 Network1 구성이 현재 네트워크와 일치합니다.
    • WifiConfig_ForgetNetworkById 호출하여 Network2 구성을 삭제합니다.

클라이언트 인증서 업데이트

클라이언트 인증서는 Azure Sphere 디바이스를 인증하는 데 사용되는 퍼블릭 및 프라이빗 키 쌍으로 구성됩니다. 루트 CA 인증서와 마찬가지로 클라이언트 인증서는 때때로 만료되며 디바이스는 새 인증서를 제시할 수 있어야 합니다. 상위 수준 애플리케이션은 기존 인증서가 만료되기 전에 새 인증서를 가져올 책임이 있습니다. 앱은 CertStore_GetCertificateNotAfter 호출하여 인증서가 만료되는 날짜와 시간을 가져올 수 있습니다.

다음 그림에서는 이 절차를 요약합니다. 이 패턴을 사용하면 인증서 업데이트 코드에서 각 새 인증서에 대해 고유한 이름을 만드는 대신 ClientCert1 및 ClientCert2와 같은 상수 인증서 ID를 사용할 수 있습니다. 또한 네트워크 교환 또는 클라이언트 인증서 정리가 필요하지 않습니다.

클라이언트 인증서를 업데이트하는 애플리케이션 흐름

상위 수준 애플리케이션은 클라이언트 인증서에 대한 업데이트를 원활하게 처리하려면 다음 단계를 수행해야 합니다.

  1. 일반 작업의 일부로 애플리케이션은 형식 WifiConfig_Security_Wpa2_EAP_TLS의 Network1을 구성합니다. 이 네트워크는 디바이스의 클라이언트 인증서(ClientCert1) 및 RADIUS 서버의 루트 CA에 연결됩니다. 앱이 업데이트 절차를 시작하기 전에 WifiConfig_GetNetworkIdByConfigName 호출하고WifiConfig_GetConnectedNetworkId 디바이스가 Network1에 연결되어 있는지 확인합니다. 네트워크 ID가 일치하는 경우 앱이 의도한 네트워크에 연결되어 있는지 확인할 수 있습니다.

  2. 앱은 정기적으로 CertStore_GetCertificateNotAfter 호출하여 클라이언트 인증서가 만료되는 시기를 결정합니다. 또는 애플리케이션이 변경 가능한 스토리지에 만료 날짜를 저장할 수 있습니다. 그러나 다시 부팅할 때마다 만료 날짜를 매일 검사 합니다.

    앱은 만료 날짜와 시간을 현재 날짜 및 시간과 비교합니다. 인증서가 미리 결정된 임계값 기간 내에 만료되면 앱은 새 인증서를 가져옵니다. 임계값 기간의 길이는 원하는 기간입니다. 디바이스가 오랫동안 오프라인 상태이거나 네트워크 또는 서버 문제가 반복되는 경우 만료 최소 4주 전에 새 인증서를 가져오는 것이 좋습니다. 검사 초기에 문제를 resolve 시간이 늘어나야 합니다.

  3. 앱은 적절한 인증서 발급자로부터 새 인증서를 가져옵니다. 인증서 발급자의 선택은 로컬 네트워크 관리자의 책임입니다.

  4. 앱은 CertStore_InstallClientCertificate 호출하여 새 인증서를 ClientCert2로 저장하고 WifiConfig_SetClientCertStoreIdentifier 호출하여 Network1 Wi-Fi 구성에 추가합니다.

  5. 앱은 WifiConfig_ReloadConfig 호출하여 Wi-Fi 구성을 다시 로드합니다. 이 단계에서는 클라이언트Cert2를 네트워크 연결에서 사용할 수 있도록 디바이스에서 사용할 수 있습니다.

  6. 네트워크 연결이 성공했는지 확인합니다.

    • 연결이 성공하면 ClientCert2가 이제 유효합니다.

      • CertStore_MoveCertificate 호출하여 ClientCert2의 이름을 ClientCert1로 바꿉니다.

      • WifiConfig_SetNetworkEnabled 호출하여 Network1을 사용하지 않도록 설정하여 네트워크의 사용 상태를 false로 설정한 다음, WifiConfig_SetNetworkEnabled 호출하여 Network1을 다시 사용하도록 설정하여 사용 상태를 true로 설정합니다. 구성을 사용하지 않도록 설정하고 다시 사용하도록 설정하면 이름이 바뀐 인증서의 내용을 애플리케이션에서 사용할 수 있습니다.

    • 연결에 실패하면 ClientCert2가 아직 유효하지 않거나 다른 오류가 발생했음을 의미합니다.

      • 인증서가 아직 유효하지 않은 경우 7단계를 계속 진행하여 네트워크 구성을 원래 상태로 반환합니다.
      • 다른 오류가 발생한 경우 도움말은 네트워크 문제 해결을 참조하고 연결을 다시 시도하세요.
  7. 네트워크 연결이 성공했는지 여부에 관계없이 WifiConfig_ReloadConfig 호출하여 Wi-Fi 구성을 다시 로드합니다. 연결에 성공하면 다시 로드된 구성은 ClientCert2로 대체된 새 ClientCert1을 사용합니다. 연결에 실패하면 다시 로드된 구성에서 ClientCert1을 사용합니다.