Поделиться через


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

Область применения:Отметка IoT Edge 1.5 IoT Edge 1.5

Внимание

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

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

Примечание.

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

Предварительные условия

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

Совет

  • Сертификат может быть закодирован в двоичном представлении с именем DER (правила различающейся кодировки) или текстовым представлением с именем PEM (конфиденциальность расширенной почты). Формат PEM имеет -----BEGIN CERTIFICATE----- заголовок, за которым следует DER, закодированный в Base64, а затем -----END CERTIFICATE----- колонтитул.
  • Как и в сертификате, закрытый ключ можно закодировать в двоичном коде DER или текстовом представлении PEM.
  • Поскольку PEM определён, можно также создать PEM, который объединяет как CERTIFICATE, так и PRIVATE 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/ -rw-r--r-- (644) aziotcs
/var/aziot/secrets/ Каталог ключей drwx------ (700) aziotks
Файлы ключей в /var/aziot/secrets/ -rw------- (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 bundle cert. Если раздел отсутствует, его можно скопировать из файла шаблона конфигурации.

    Совет

    Если файл конфигурации еще не существует на вашем устройстве, используйте файл /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 aziotcs и службе ключей aziotks на сертификат и закрытый ключ, соответственно.

    # 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
  • Ключевые идентификаторы, помогающие различать выдающие удостоверяющие центры с одинаковым Общим Именем (CN) для ротации сертификатов удостоверяющих центров.
    • subjectKeyIdentifier = хэш
    • Параметр authorityKeyIdentifier = keyid:always,issuer:always используется для указания всегда идентифицировать ключ и издателя.

Убедитесь, что общепринятое имя (CN) совпадает с идентификатором устройства IoT Edge, зарегистрированным в IoT Hub, или с идентификатором регистрации в 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 CA

Edge CA имеет два различных режима:

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

Краткое руководство по ЦС Edge (Центр сертификации)

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

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

Внимание

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

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

Настройка срока действия для Quickstart Edge CA

Чтобы настроить срок действия сертификата, отличный от 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 всякий раз, когда это возможно.

Внимание

Общее имя (CN) сертификата полномочий Edge не может совпадать с параметром имени хоста устройства, определённым в файле config.toml конфигурации устройства, или с идентификатором устройства, зарегистрированным в IoT Hub.

План обновления Центра сертификации Edge

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

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

Пример: использование файлов сертификатов УЦ Edge от поставщика инфраструктуры открытых ключей (PKI)

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

  • Корневой сертификат ЦС PKI
  • Сертификат выпускающего центра или центра сертификации и связанный закрытый ключ

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

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

Пример сертификата CA для 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 или IoT Hub.

  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. Истечение срока действия Edge CA следует избегать, чтобы не нарушать работу многих функций IoT Edge. Если для ситуации требуется полный контроль над жизненным циклом сертификата ЦС Edge, используйте вместо этого метод управления ЦС вручную.

Не используйте EST или auto_renew с другими методами настройки, включая ручную настройку X.509, IoT Hub и 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 в рабочей среде.