18
правок
Xenols (обсуждение | вклад) |
Xenols (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
В контроллеры '''WirenBoard''' встроен чип '''ATECCx08''', назначением которого является генерация ключевых пар, хранение приватных ключей а также операции асимметричного шифрования с использованием эллиптических кривых. | В контроллеры '''WirenBoard''' встроен чип '''ATECCx08''', назначением которого является генерация ключевых пар, хранение приватных ключей а также операции асимметричного шифрования с использованием эллиптических кривых. | ||
Приватный ключ после начальной инициализации хранится в микросхеме и не покидает ее, тем самым исключается его компрометация. | Приватный ключ после начальной инициализации хранится в микросхеме и не покидает ее, тем самым исключается его компрометация. | ||
Используя данную микросхему можно организовать авторизацию контроллера и защиту соединения по SSL на внешних сервисах и быть уверенным, что запрос выполнен с использованием именно этого экземпляра микросхемы. | Используя данную микросхему можно организовать авторизацию контроллера и защиту соединения по SSL на внешних сервисах и быть уверенным, что запрос выполнен с использованием именно этого экземпляра микросхемы. | ||
В данной статье пойдет речь о трех вариантах применения: nginx, openssl, mosquitto. | В данной статье пойдет речь о трех вариантах применения: nginx, openssl, mosquitto. | ||
Для доступа к криптоустройству нужна библиотека libateccssl1.1, установим ее | Для доступа к криптоустройству нужна библиотека libateccssl1.1, установим ее командой: | ||
'''apt install libateccssl1.1''' | '''apt install libateccssl1.1''' | ||
Строка 24: | Строка 27: | ||
init = 1 | init = 1 | ||
</pre> | </pre> | ||
Теперь приступим к созданию сертификатов. | |||
Для начала создадим свой центр сертификации (Certification Authority, CA): | |||
Для этого сгенерируем ключевую пару: | |||
'''openssl genrsa -out ca.key 2048''' | |||
И сертификат нашего CA: | |||
'''openssl req -x509 -new -days 3650 -key ca.key -out ca.crt -subj "/CN=MY CA"''' | |||
'''CA''' является основой безопасности в данной схеме, поэтому эти операции выполняем на машине доступ к которой | |||
есть только у владельца '''CA'''. | |||
Далее на конроллере WB создаем запрос на сертификат устройства: | |||
openssl req -new -engine ateccx08 -keyform engine -key ATECCx08:00:04:C0:00 -subj "/CN=wirenboard-AP6V5MDG" -out device_AP6V5MDG.csr | |||
В этой команде мы указываем, что запрос подписывается приватным ключом, находящимся в криптоустройстве ateccx08 ключом | |||
с идентификатором ATECCx08:00:04:C0:00 и публичным именем wirenboard-AP6V5MDG. Запрос помещаем в файл device_AP6V5MDG.csr. | |||
Имя можно выбрать любое уникальное, удобно для этой цели спользовать идентификатор устройства, который по умолчанию прописывается | |||
в файле /etc/hostname: | |||
cat /etc/hostname | |||
wirenboard-AP6V5MDG | |||
Далее этот запрос подписываем в нашем центре сертификации: | |||
openssl x509 -req -in device_AP6V5MDG.csr -CA ca.crt -CAkey ca.key -out device_AP6V5MDG.crt -days 365 -CAcreateserial | |||
В этой команде мы уазываем файл запроса, и файлы CA необходимые для подписи. В итоге получаем сертификат устройства device_AP6V5MDG.crt. | |||
Файл device_AP6V5MDG.crt копируем на контроллер WB, он будет необходим для авторизацци. | |||
Давайте посмотрим, что содержится в файлах сертификатов CA и устройства: |
правок