Управление сертификатами IoT Edge
Область применения: IoT Edge 1.5 IoT Edge 1.4
Внимание
IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS заканчивается жизнью с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
Все устройства IoT Edge используют сертификаты для создания безопасных соединений между средой выполнения и любыми модулями, работающими на устройстве. Устройства IoT Edge, работающие как шлюзы, используют те же сертификаты и для подключения к нижестоящим устройствам.
Примечание.
Термин корневой ЦС , используемый в этой статье, относится к сертификату самого верхнего центра в цепочке сертификатов для решения Интернета вещей. Вам не нужно использовать корневой каталог сертификата синдикированного центра сертификации или корневой каталог центра сертификации организации. Часто это промежуточный сертификат ЦС.
Необходимые компоненты
Вы должны ознакомиться с понятиями, описанными в статье "Общие сведения о том, как Azure IoT Edge использует сертификаты, в частности, как IoT Edge использует сертификаты".
Устройство IoT Edge.
Если устройство IoT Edge не настроено, его можно создать на виртуальной машине Azure. Выполните действия, описанные в одной из этих кратких статей, чтобы создать виртуальное устройство Linux или создать виртуальное устройство Windows.
Возможность изменить файл
config.toml
конфигурации IoT Edge после шаблона конфигурации.Если шаблон
config.toml
не основан на шаблоне, откройте шаблон и используйте закомментированные инструкции, чтобы добавить разделы конфигурации после структуры шаблона.Если у вас есть новая установка IoT Edge, которая не настроена, скопируйте шаблон, чтобы инициализировать конфигурацию. Не используйте эту команду, если у вас есть существующая конфигурация. Он перезаписывает файл.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Требования к формату
Совет
- Сертификат может быть закодирован в двоичном представлении с именем 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/ |
-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.
Получите сертификат корневого ЦС от поставщика PKI.
Убедитесь, что сертификат соответствует требованиям к формату.
Скопируйте 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
В файле
config.toml
конфигурации IoT Edge найдите раздел сертификата пакета trust. Если раздел отсутствует, его можно скопировать из файла шаблона конфигурации.Совет
Если файл конфигурации еще не существует на вашем устройстве, используйте файл
/etc/aziot/config.toml.edge.template
в качестве шаблона для его создания.trust_bundle_cert
Задайте для ключа расположение файла сертификата.trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
Примените конфигурацию.
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. Чтобы их установить, сделайте следующее.
Проверьте файлы сертификата и закрытого ключа в соответствии с требованиями к формату.
Скопируйте 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
Предоставьте права владения службе сертификатов 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
В
config.toml
поле "Найти соответствующий раздел" для типа сертификата, который необходимо настроить. Например, можно найти ключевое словоcert
.Используя пример из шаблона конфигурации, настройте сертификат удостоверения устройства или файлы ЦС Edge. Пример шаблона:
cert = "file:///var/aziot/certs/my-cert.pem" pk = "file:///var/aziot/secrets/my-private-key.pem"
Применение конфигурации
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 или Центр Интернета вещей.
Получите доступ к серверу EST. Если у вас нет сервера EST, используйте один из следующих вариантов для запуска тестирования:
Создайте тестовый сервер EST, выполнив действия, описанные в руководстве по настройке регистрации по протоколу Secure Transport Server для Azure IoT Edge.
Партнеры Майкрософт с GlobalSign предоставляют демонстрационную учетную запись.
В файле
config.toml
конфигурации устройства IoT Edge настройте путь к доверенному корневому сертификату, который IoT Edge использует для проверки сертификата TLS сервера EST. Этот шаг необязателен, если сервер EST имеет общедоступный корневой сертификат TLS.[cert_issuance.est] trusted_certs = [ "file:///var/aziot/root-ca.pem", ]
Укажите URL-адрес по умолчанию для сервера EST. Добавьте
config.toml
следующий раздел с URL-адресом сервера EST:[cert_issuance.est.urls] default = "https://example.org/.well-known/est"
Чтобы настроить сертификат 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%"
Примените изменения конфигурации.
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 также может автоматически обновлять ЦС быстрого запуска по умолчанию. Продление сертификата настраивается для каждого типа сертификата.
В
config.toml
поле "Найти соответствующий раздел" для типа сертификата, который необходимо настроить. Например, можно найти ключевое словоauto_renew
.Используя пример из шаблона конфигурации, настройте сертификат удостоверения устройства, ЦС Edge или сертификаты удостоверения EST. Пример шаблона:
[REPLACE_WITH_CERT_TYPE] # ... method = "est" # ... [REPLACE_WITH_CERT_TYPE.auto_renew] rotate_key = true threshold = "80%" retry = "4%"
Применение конфигурации
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 в рабочей среде.