Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: IoT Edge 1.5
Внимание
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/ |
-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.
Получите сертификат корневого ЦС от поставщика 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 bundle cert. Если раздел отсутствует, его можно скопировать из файла шаблона конфигурации.Совет
Если файл конфигурации еще не существует на вашем устройстве, используйте файл
/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
- Ключевые идентификаторы, помогающие различать выдающие удостоверяющие центры с одинаковым Общим Именем (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.
Получите доступ к серверу 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. Истечение срока действия 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 в рабочей среде.