Обеспечение безопасности связи TLS в Mosquitto

С GNU xargsвы можете сделать:

xargs -P4 -n 10 -r0a <(find. -name '*.gz' -type f -print0) sh -c '
  for file do
    zcat < "$file" | sort > "$file.txt"
  done' sh {} +

Это вызовет до 4 shпараллельных процессов, каждый из которых обрабатывает до 10 файлов один за другим в цикле.

0
17.12.2019, 16:26
1 ответ

Всегда немного страшно, когда все работает вот так.

Если вы хотите протестировать его, вы можете попробовать заставить его работать со сбоем. Если кто-то попытается подделать ваш сервер, он не сможет сделать это с помощью сертификата, подписанного вашим (собственным -подписанным )сертификатом ЦС. Таким образом, вы можете посмотреть, что произойдет, если сертификат ЦС, используемый клиентом, не совпадает с сертификатом, используемым для подписи сертификата сервера.

Таким образом, чтобы проверить, правильно ли ваши клиенты mosquitto_subи mosquitto_pubпроверяют сертификат, вы можете попробовать создать совершенно новый "фиктивный" сертификат ЦС. Не устанавливайте это на сервер. Но попробуйте использовать его с вашими командами mosquitto_subи mosquitto_pub:

mosquitto_sub -h 192.168.1.8 -t sensor --cafile dummy_ca.crt -p 8883 -d
mosquitto_pub -h 192.168.1.8 -t sensor --cafile dummy_ca.crt -m "test" -p 8883 -d

Если ваш клиент безопасно обменивается данными с сервером, это должно привести к ошибке. Это связано с тем, что сертификат вашего сервера не будет подписан сертификатом ЦС, ожидаемым клиентом. Если он работает с фиктивным сертификатом, у вас есть проблема, и вам нужно выяснить, почему.


Шифрование с открытым ключом работает с использованием пар ключей (открытый и закрытый ключи ). Закрытый ключ хранится скрытым и никому никогда не передается . Все, что зашифровано с помощью открытого ключа, может быть расшифровано только с помощью закрытого ключа. Даже открытый ключ нельзя использовать для расшифровки чего-либо, зашифрованного с помощью открытого ключа... и вы не можете получить закрытый ключ из открытого ключа.

Таким образом, чтобы общаться по зашифрованному каналу, оба устройства (клиент и сервер )отправляют друг другу свои собственные открытые ключи, сохраняя в секрете свои собственные закрытые ключи. Неважно, сможет ли их получить хакер, потому что их нельзя использовать для расшифровки чего-либо. Затем, чтобы поговорить, клиент шифрует все с помощью открытого ключа сервера, а сервер шифрует все с помощью открытого ключа клиента.Только сервер может расшифровать получаемые им сообщения, потому что только у него есть закрытый ключ для их расшифровки. Точно так же только клиент может расшифровать отправленные ему сообщения.


Сертификаты используются только для того, чтобы гарантировать, что хакер не сможет выполнить атаку «человек посередине», выдавая себя за сервер. Сертификат содержит три важных элемента информации:

  1. Имя сервера (его доменное имя)
  2. Открытый ключ сервера
  3. Подпись центра сертификации, подтверждающая подлинность этого сертификата.

Таким образом, хакер не может притворяться вашим сервером, потому что он должен либо:

  • Получите доступ к закрытому ключу сервера для расшифровки всего, что вы отправляете. Они не могут получить это, потому что это всегда держится в секрете сервером и никогда никому не выдается
  • Отправляет вам сертификат, подтверждающий, что их собственный (фальшивый )открытый ключ является правильным для сервера. Они не могут создать поддельный сертификат, потому что не могут подписать его ЦС
0
28.01.2020, 03:00

Теги

Похожие вопросы