Управление сертификатами IoT Edge

Область применения:IoT Edge 1.4 проверка mark IoT Edge 1.4

Внимание

IoT Edge 1.4 является поддерживаемым выпуском. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

Все устройства IoT Edge используют сертификаты для создания безопасных соединений между средой выполнения и любыми модулями, работающими на устройстве. Устройства IoT Edge, работающие как шлюзы, используют те же сертификаты и для подключения к нижестоящим устройствам.

Примечание.

Термин корневой ЦС , используемый в этой статье, относится к сертификату самого верхнего центра в цепочке сертификатов для решения Интернета вещей. Вам не нужно использовать корневой каталог сертификата синдикированного центра сертификации или корневой каталог центра сертификации организации. Часто это промежуточный сертификат ЦС.

Необходимые компоненты

Требования к формату

Совет

  • Сертификат может быть закодирован в двоичном представлении с именем DER (правила различающейся кодировки) или текстовым представлением с именем PEM (конфиденциальность расширенной почты). Формат PEM имеет -----BEGIN CERTIFICATE----- заголовок, за которым следует der в кодировке Base64, а затем нижний -----END CERTIFICATE----- колонтитул.
  • Как и в сертификате, закрытый ключ можно закодировать в двоичном коде DER или текстовом представлении PEM.
  • Так как PEM очерчен, можно также создать PEM, который объединяет и CERTIFICATEPRIVATE KEY последовательно в одном и том же файле.
  • Наконец, сертификат и закрытый ключ можно закодировать вместе в двоичном представлении PKCS#12, которое шифруется с помощью дополнительного пароля.

Расширения файлов являются произвольными, и вам нужно выполнить file команду или просмотреть файл, чтобы проверить тип. В общем случае файлы используют следующие соглашения о расширении:

  • .cer — это сертификат в форме DER или PEM.
  • .pem — это сертификат, закрытый ключ или оба в форме PEM.
  • .pfx— это PKCS#12-файл.

IoT Edge требует, чтобы сертификат и закрытый ключ были:

  • Формат PEM
  • Отдельные файлы
  • В большинстве случаев с полной цепочкой

Если вы получаете .pfx файл от поставщика PKI, скорее всего, сертификат и закрытый ключ, закодированные вместе в одном файле. Убедитесь, что это тип файла PKCS#12 с помощью file команды. Файл PKCS#12 .pfx можно преобразовать в PEM-файлы с помощью команды opensl pkcs12.

Если поставщик PKI предоставляет .cer файл, он может содержать тот же сертификат, что .pfxи сертификат или сертификат поставщика PKI. Чтобы проверить, проверьте файл с openssl x509 помощью команды. Если это выдающий сертификат:

  • Если он находится в формате DER (двоичный), преобразуйте его в PEM с openssl x509 -in cert.cer -out cert.pemпомощью .
  • Используйте PEM-файл в качестве пакета доверия. Дополнительные сведения о пакете доверия см. в следующем разделе.

Внимание

Инфраструктура PKI должна поддерживать ключи RSA-2048 и ключи EC P-256. Например, серверы EST должны поддерживать эти типы ключей. Вы можете использовать другие типы ключей, но мы тестируем только ключи RSA-2048 и ключи EC P-256.

Требования к разрешениям

В следующей таблице перечислены разрешения файлов и каталогов, необходимые для сертификатов IoT Edge. Предпочтительный каталог для сертификатов — это /var/aziot/certs//var/aziot/secrets/ ключи.

Файл или каталог Разрешения Ответственный
/var/aziot/certs/ Каталог сертификатов drwxr-xr-x (755) aziotcs
Файлы сертификатов в /var/aziot/certs/ -wr-r-r-- (644) aziotcs
/var/aziot/secrets/ Каталог ключей drwx------ (700) aziotks
Файлы ключей в /var/aziot/secrets/ -wr------- (600) aziotks

Чтобы создать каталоги, задайте разрешения и задайте владельца, выполните следующие команды:

# If the certificate and keys directories don't exist, create, set ownership, and set permissions
sudo mkdir -p /var/aziot/certs
sudo chown aziotcs:aziotcs /var/aziot/certs
sudo chmod 755 /var/aziot/certs

sudo mkdir -p /var/aziot/secrets
sudo chown aziotks:aziotks /var/aziot/secrets
sudo chmod 700 /var/aziot/secrets

# Give aziotcs ownership to certificates
# Read and write for aziotcs, read-only for others
sudo chown -R aziotcs:aziotcs /var/aziot/certs
sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;

# Give aziotks ownership to private keys
# Read and write for aziotks, no permission for others
sudo chown -R aziotks:aziotks /var/aziot/secrets
sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;

# Verify permissions of directories and files
sudo ls -Rla /var/aziot

Выходные данные списка с правильным владением и разрешением похожи на следующие выходные данные:

azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
/var/aziot:
total 16
drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets

/var/aziot/certs:
total 20
drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
-rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-devicename-full-chain.cert.pem

/var/aziot/secrets:
total 16
drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-devicename.key.pem

Управление доверенным корневым ЦС (пакет доверия)

Использование самозаверяющего сертификата центра сертификации (ЦС) в качестве корня доверия с IoT Edge и модулями называется пакетом доверия. Пакет доверия доступен для IoT Edge и модулей для взаимодействия с серверами. Чтобы настроить пакет доверия, укажите путь к файлу в файле конфигурации IoT Edge.

  1. Получите сертификат корневого ЦС от поставщика PKI.

  2. Убедитесь, что сертификат соответствует требованиям к формату.

  3. Скопируйте PEM-файл и предоставьте службе сертификатов IoT Edge доступ. Например, с каталогом /var/aziot/certs :

    # Make the directory if doesn't exist
    sudo mkdir /var/aziot/certs -p
    
    # Change cert directory user and group ownership to aziotcs and set permissions
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    # Copy certificate into certs directory
    sudo cp root-ca.pem /var/aziot/certs
    
    # Give aziotcs ownership to certificate and set read and write permission for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/root-ca.pem
    sudo chmod 644 /var/aziot/certs/root-ca.pem
    
  4. В файле config.tomlконфигурации IoT Edge найдите раздел сертификата пакета trust. Если раздел отсутствует, его можно скопировать из файла шаблона конфигурации.

    Совет

    Если файл конфигурации еще не существует на вашем устройстве, используйте файл /etc/aziot/config.toml.edge.template в качестве шаблона для его создания.

  5. trust_bundle_cert Задайте для ключа расположение файла сертификата.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Примените конфигурацию.

    sudo iotedge config apply
    

Установка корневого ЦС в хранилище сертификатов ОС

Установка сертификата в файл пакета доверия делает его доступным для модулей контейнеров, но не для размещения модулей, таких как обновление устройств Azure или Defender. Если вы используете компоненты уровня узла или работаете с другими проблемами TLS, также установите корневой сертификат ЦС в хранилище сертификатов операционной системы:

sudo cp /var/aziot/certs/my-root-ca.pem /usr/local/share/ca-certificates/my-root-ca.pem.crt

sudo update-ca-certificates

Импорт файлов сертификатов и закрытых ключей

IoT Edge может использовать существующие сертификаты и файлы закрытого ключа для проверки подлинности или проверки подлинности в Azure, выдачи новых сертификатов сервера модуля и проверки подлинности на серверах EST. Чтобы их установить, сделайте следующее.

  1. Проверьте файлы сертификата и закрытого ключа в соответствии с требованиями к формату.

  2. Скопируйте PEM-файл на устройство IoT Edge, где модули IoT Edge могут иметь доступ. Например, каталог /var/aziot/.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy certificate and private key into the correct directory
    sudo cp my-cert.pem /var/aziot/certs
    sudo cp my-private-key.pem /var/aziot/secrets
    
  3. Предоставьте права владения службе сертификатов IoT Edge и службе aziotcsaziotks ключей сертификату и закрытому ключу соответственно.

    # Give aziotcs ownership to certificate
    # Read and write for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/my-cert.pem
    sudo chmod 644 /var/aziot/certs/my-cert.pem
    
    # Give aziotks ownership to private key
    # Read and write for aziotks, no permission for others
    sudo chown aziotks:aziotks /var/aziot/secrets/my-private-key.pem
    sudo chmod 600 /var/aziot/secrets/my-private-key.pem
    
  4. В config.tomlполе "Найти соответствующий раздел" для типа сертификата, который необходимо настроить. Например, можно найти ключевое словоcert.

  5. Используя пример из шаблона конфигурации, настройте сертификат удостоверения устройства или файлы ЦС Edge. Пример шаблона:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. Применение конфигурации

    sudo iotedge config apply
    

Чтобы предотвратить ошибки при истечении срока действия сертификатов, не забудьте вручную обновить файлы и конфигурацию до истечения срока действия сертификата.

Пример. Использование файлов сертификатов удостоверения устройства из поставщика PKI

Запросите сертификат клиента TLS и закрытый ключ от поставщика PKI.

Требования к сертификату удостоверения устройства:

  • Стандартные расширения сертификатов клиента: extendedKeyUsage = clientAuth keyUsage = критически важный, digitalSignature
  • Идентификаторы ключей, помогающие различать выдачу ЦС с одним и тем же центром сертификации для смены сертификатов ЦС.
    • subjectKeyIdentifier = хэш
    • authorityKeyIdentifier = keyid:always,issuer:always

Убедитесь, что общее имя (CN) совпадает с идентификатором устройства IoT Edge, зарегистрированным в Центр Интернета вещей или идентификаторе регистрации в DPS. Например, в следующем сертификате Subject: CN = my-device удостоверения устройства важное поле, которое должно соответствовать.

Пример сертификата удостоверения устройства:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 48 (0x30)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN = myPkiCA
        Validity
            Not Before: Jun 28 21:27:30 2022 GMT
            Not After : Jul 28 21:27:30 2022 GMT
        Subject: CN = my-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:ad:b0:63:1f:48:19:9e:c4:9d:91:d1:b0:b0:e5:
                    ...
                    80:58:63:6d:ab:56:9f:90:4e:3f:dd:df:74:cf:86:
                    04:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Key Identifier:
                C7:C2:DC:3C:53:71:B8:42:15:D5:6C:4B:5C:03:C2:2A:C5:98:82:7E
            X509v3 Authority Key Identifier:
                keyid:6E:57:C7:FC:FE:50:09:75:FA:D9:89:13:CB:D2:CA:F2:28:EF:9B:F6

    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:3c:d2:db:06:3c:d7:65:b7:22:fe:df:9e:11:5b:
         ...
         eb:da:fc:f1:6a:bf:31:63:db:5a:16:02:70:0f:cf:c8:e2
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Совет

Сведения о тестировании без доступа к файлам сертификатов, предоставляемым PKI, см. в разделе "Создание демонстрационных сертификатов" для тестирования функций устройства для создания кратковременного сертификата удостоверения устройства и закрытого ключа.

Пример конфигурации при подготовке с помощью Центр Интернета вещей:

[provisioning]
source = "manual"
# ...
[provisioning.authentication]
method = "x509"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Пример конфигурации при подготовке с помощью DPS:

[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Издержки, связанные с управлением сертификатами вручную, могут быть рискованными и подверженными ошибкам. Для рабочей среды рекомендуется использовать IoT Edge с автоматическим управлением сертификатами.

Управление пограничным ЦС

Пограничный ЦС имеет два разных режима:

  • Краткое руководство — это поведение по умолчанию. Краткое руководство предназначено для тестирования и не подходит для рабочей среды.
  • Рабочий режим требует предоставления собственного источника для сертификата ЦС Edge и закрытого ключа.

Краткое руководство по ЦС Edge

Чтобы помочь при начале работы, IoT Edge автоматически создает сертификат ЦС Edge при первом запуске по умолчанию. Этот самозаверяющий сертификат предназначен только для сценариев разработки и тестирования, а не для рабочей среды. По умолчанию срок действия сертификата истекает через 90 дней. Срок действия можно настроить. Это поведение называется кратким руководством по ЦС Edge.

Краткое руководство по ЦС Edge позволяет edgeHub и другим модулям IoT Edge иметь действительный сертификат сервера при первой установке IoT Edge без настройки. Сертификат необходим, edgeHub так как модули или подчиненные устройства должны устанавливать безопасные каналы связи. Без ЦС Edge быстрого запуска начало работы будет значительно сложнее, так как вам потребуется предоставить действительный сертификат сервера от поставщика PKI или с такими opensslинструментами.

Внимание

Никогда не используйте ЦС Edge для рабочей среды, так как локальный созданный сертификат в нем не подключен к PKI.

Безопасность удостоверения на основе сертификатов является производным от хорошо управляемого PKI (инфраструктуры), в котором сертификат (документ) является только компонентом. Хорошо управляемый PKI позволяет определениям, приложениям, управлению и принудительному применению политик безопасности включать, но не ограничиваться выдачой сертификатов, отзывом и управлением жизненным циклом.

Настройка времени существования для центра сертификации Edge для быстрого запуска

Чтобы настроить срок действия сертификата, отличный от 90 дней по умолчанию, добавьте значение в днях в секцию Сертификат ЦС Edge (быстрый запуск) файла конфигурации.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Удалите содержимое /var/lib/aziot/certd/certs и /var/lib/aziot/keyd/keys папки, чтобы удалить все ранее созданные сертификаты, а затем применить конфигурацию.

Продление центра сертификации Edge

По умолчанию IoT Edge автоматически обновляет сертификат ЦС Edge быстрого запуска при 80% времени существования сертификата. Например, если сертификат имеет 90-дневное время существования, IoT Edge автоматически создает сертификат ЦС Edge в течение 72 дней после выдачи.

Чтобы изменить логику автоматического продления, добавьте следующие параметры в раздел сертификата ЦС Edge в config.tomlразделе . Например:

[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"

Пограничный ЦС в рабочей среде

После перехода в рабочий сценарий или вы хотите создать устройство шлюза, вы больше не сможете использовать ЦС Edge быстрого запуска.

Одним из вариантов является предоставление собственных сертификатов и управление ими вручную. Однако, чтобы избежать рискованного и подверженного ошибкам процесса управления сертификатами вручную, используйте сервер EST всякий раз, когда это возможно.

Внимание

Общее имя сертификата ЦС Edge не может совпадать с параметром имени узла устройства, определенным в файле конфигурации устройства config.toml или идентификатором устройства, зарегистрированным в Центр Интернета вещей.

Планирование обновления ЦС Edge

При продлении сертификата ЦС Edge все сертификаты, выданные им, например сертификаты сервера модуля, создаются повторно. Чтобы предоставить модулям новые сертификаты сервера, IoT Edge перезапускает все модули при продлении сертификата ЦС Edge.

Чтобы свести к минимуму потенциальные негативные последствия перезапуска модуля, запланируйте продление сертификата ЦС Edge в определенное время (например, threshold = "10d") и уведомите зависимых от решения о простое.

Пример. Использование файлов сертификатов ЦС Edge из поставщика PKI

Запросите следующие файлы от поставщика PKI:

  • Корневой сертификат ЦС PKI
  • Сертификат выдачи или ЦС и связанный закрытый ключ

Чтобы выдающий сертификат ЦС стал пограничным ЦС, он должен иметь следующие расширения:

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign

Пример сертификата ЦС edge для результирующих пограничных вычислений:

openssl x509 -in my-edge-ca-cert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4098 (0x1002)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myPkiCA
        Validity
            Not Before: Aug 27 00:00:50 2022 GMT
            Not After : Sep 26 00:00:50 2022 GMT
        Subject: CN = my-edge-ca.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e1:cb:9c:c0:41:d2:ee:5d:8b:92:f9:4e:0d:3e:
                    ...
                    25:f5:58:1e:8c:66:ab:d1:56:78:a5:9c:96:eb:01:
                    e4:e3:49
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FD:64:48:BB:41:CE:C1:8A:8A:50:9B:2B:2D:6E:1D:E5:3F:86:7D:3E
            X509v3 Authority Key Identifier:
                keyid:9F:E6:D3:26:EE:2F:D7:84:09:63:84:C8:93:72:D5:13:06:8E:7F:D1
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         20:c9:34:41:a3:a4:8e:7c:9c:6e:17:f5:a6:6f:e5:fc:6e:59:
         ...
         7c:20:5d:e5:51:85:4c:4d:f7:f8:01:84:87:27:e3:76:65:47:
         9e:6a:c3:2e:1a:f0:dc:9d
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

После получения последних файлов обновите пакет доверия:

trust_bundle_cert = "file:///var/aziot/root-ca.pem"

Затем настройте IoT Edge для использования файлов сертификатов и закрытых ключей:

[edge_ca]
cert = "file:///var/aziot/my-edge-ca-cert.pem"
pk = "file:///var/aziot/my-edge-ca-private-key.key.pem"

Если вы использовали любые другие сертификаты для IoT Edge на устройстве раньше, удалите файлы и /var/lib/aziot/certd/certs закрытые ключи, связанные с сертификатами (не все ключи)./var/lib/aziot/keyd/keys IoT Edge повторно создает их с помощью нового сертификата ЦС, который вы предоставили.

Этот подход требует вручную обновить файлы по истечении срока действия сертификата. Чтобы избежать этой проблемы, рекомендуется использовать EST для автоматического управления.

Автоматическое управление сертификатами с помощью сервера EST

IoT Edge может интерфейсировать с сервером регистрации по протоколу Secure Transport (EST) для автоматической выдачи и продления сертификата. Использование EST рекомендуется для рабочей среды, так как оно заменяет необходимость ручного управления сертификатами, что может быть рискованным и подверженным ошибкам. Его можно настроить глобально и переопределить для каждого типа сертификата.

В этом сценарии сертификат начальной загрузки и закрытый ключ, как ожидается, будут длительными и потенциально установлены на устройстве во время производства. IoT Edge использует учетные данные начальной загрузки для проверки подлинности на сервере EST для первоначального запроса для выдачи сертификата удостоверения для последующих запросов и проверки подлинности в DPS или Центр Интернета вещей.

  1. Получите доступ к серверу EST. Если у вас нет сервера EST, используйте один из следующих вариантов для запуска тестирования:

  2. В файле config.tomlконфигурации устройства IoT Edge настройте путь к доверенному корневому сертификату, который IoT Edge использует для проверки сертификата TLS сервера EST. Этот шаг необязателен, если сервер EST имеет общедоступный корневой сертификат TLS.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. Укажите URL-адрес по умолчанию для сервера EST. Добавьте config.tomlследующий раздел с URL-адресом сервера EST:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. Чтобы настроить сертификат EST для проверки подлинности, добавьте следующий раздел с путем к сертификату и закрытому ключу:

    [cert_issuance.est.auth]
    bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
    bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"
    
    [cert_issuance.est.identity_auto_renew]
    rotate_key = true
    threshold = "80%"
    retry = "4%"
    
  5. Примените изменения конфигурации.

    sudo iotedge config apply
    

Параметры, описанные в [cert_issuance.est.identity_auto_renew] следующем разделе.

Проверка подлинности по имени пользователя и с помощью пароля

Если проверка подлинности на сервере EST с использованием сертификата невозможна, вместо этого можно использовать общий секрет или имя пользователя и пароль.

[cert_issuance.est.auth]
username = "username"
password = "password"

Настройка параметров автоматического продления

Вместо ручного управления файлами сертификатов IoT Edge имеет встроенную возможность получать и обновлять сертификаты до истечения срока действия. Для продления сертификата требуется метод выдачи, который IoT Edge может управлять. Регистрация по протоколу Secure Transport (EST) — это один метод выдачи, но IoT Edge также может автоматически обновлять ЦС быстрого запуска по умолчанию. Продление сертификата настраивается для каждого типа сертификата.

  1. В config.tomlполе "Найти соответствующий раздел" для типа сертификата, который необходимо настроить. Например, можно найти ключевое словоauto_renew.

  2. Используя пример из шаблона конфигурации, настройте сертификат удостоверения устройства, ЦС Edge или сертификаты удостоверения EST. Пример шаблона:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. Применение конфигурации

    sudo iotege config apply
    

В следующей таблице перечислены варианты, в которых выполняется auto_renew каждый из них:

Параметр Описание
rotate_key Определяет, следует ли повернуть закрытый ключ, когда IoT Edge продлевает сертификат.
threshold Задает, когда IoT Edge должен начать продление сертификата. Его можно указать следующим образом:
— Процент: целое число между 0 и 100 последующими %. Продление начинается относительно времени существования сертификата. Например, если задано значение 80%, сертификат, действительный в течение 100 дней, начинает продление в течение 20 дней до истечения срока действия.
— абсолютное время: целое число, за которым следует min (минуты) или day (дни). Продление начинается относительно срока действия сертификата. Например, если задано значение 4day в течение четырех дней или 10min в течение 10 минут, сертификат начинает обновляться в это время до истечения срока действия. Чтобы избежать непреднамеренной неправильной настройки, в которой threshold больше времени существования сертификата, рекомендуется использовать процент , когда это возможно.
retry определяет частоту повторного обновления при сбое. Напримерthreshold, он может быть точно так же указан в процентах или абсолютном времени, используя тот же формат.

Пример: автоматическое продление сертификата удостоверения устройства с помощью EST

Чтобы использовать EST и IoT Edge для автоматического выдачи и продления сертификата удостоверения устройства, который рекомендуется для рабочей среды, IoT Edge должен подготовиться в рамках группы регистрации на основе ЦС DPS. Например:

## DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

[provisioning.attestation.identity_cert]
method = "est"
common_name = "my-device"

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

Автоматическое продление для ЦС Edge должно быть включено, если для метода выдачи задано значение EST. Срок действия пограничного ЦС следует избежать, так как он нарушает множество функциональных возможностей IoT Edge. Если для ситуации требуется полный контроль над жизненным циклом сертификата ЦС Edge, используйте вместо этого метод управления ЦС вручную.

Не используйте EST или auto_renew с другими методами подготовки, включая подготовку вручную X.509 с помощью Центр Интернета вещей и DPS с индивидуальной регистрацией. IoT Edge не может обновлять отпечатки сертификатов в Azure при продлении сертификата, что предотвращает повторное подключение IoT Edge.

Пример: автоматическое управление ЦС Edge с помощью EST

Используйте автоматическую выдачу и продление ЦС EST для рабочей среды. После настройки сервера EST можно использовать глобальный параметр или переопределить его следующим образом:

[edge_ca]
method = "est"

common_name = "my-edge-CA"
url = "https://ca.example.org/.well-known/est"

bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"

[edge_ca.auto_renew]
rotate_key = true
threshold = "90%"
retry = "2%"

Сертификаты сервера модуля

Управляющей программе Edge возникают проблемы с сервером модуля и сертификатами удостоверений для использования модулями Edge. По мере необходимости модули Edge несут ответственность за продление удостоверений и сертификатов сервера.

продление;

Сертификаты сервера могут быть выданы от сертификата ЦС Edge. Независимо от метода выдачи эти сертификаты должны обновляться модулем. При разработке пользовательского модуля необходимо реализовать логику продления в модуле.

Модуль EdgeHub поддерживает функцию продления сертификата. Вы можете настроить продление сертификата сервера модуля EdgeHub с помощью следующих переменных среды:

  • ServerCertificateRenewAfterInMs: задает длительность в миллисекундах, когда сертификат сервера edgeHub обновляется независимо от времени истечения срока действия сертификата.
  • MaxCheckCertExpiryInMs: задает длительность в миллисекундах, когда служба edgeHub проверка срок действия сертификата сервера edgeHub. Если задана переменная, проверка происходит независимо от срока действия сертификата.

Дополнительные сведения о переменных среды см . в разделе "Переменные среды EdgeHub и EdgeAgent".

Изменения в версии 1.2 и более поздних версий

  • Сертификат ЦС устройства переименован в сертификат ЦС Edge.
  • Сертификат ЦС рабочей нагрузки устарел. Теперь диспетчер безопасности IoT Edge создает сертификат сервера центра edgeHub IoT Edge непосредственно из сертификата ЦС Edge без сертификата ЦС промежуточной рабочей нагрузки между ними.
  • Файл конфигурации по умолчанию имеет новое имя и расположение по /etc/iotedge/config.yaml/etc/aziot/config.toml умолчанию. Команду iotedge config import можно использовать для переноса сведений о конфигурации из старого расположения и синтаксиса в новые.

Следующие шаги

Установка сертификатов на устройстве IoT Edge является необходимым этапом перед развертыванием решения в рабочей среде. Узнайте больше о том, как подготовиться к развертыванию решения IoT Edge в рабочей среде.