Первый пост здесь, так что извиняюсь, если мой этикет не совсем в точку!
У меня возникли некоторые проблемы с пониманием того, как центры сертификации работают между отдельными машинами, особенно когда речь идет о MQTT и москитном брокере.
Я сгенерировал сертификаты сервера и клиента, используя по этой ссылке и заставили их отлично работать на локальном хосте. Для сервера я использовал обычное имя RPi-Host, то есть имя хоста, а для клиентов я использовал «localhost». Пример кода, который я использую для создания ЦС для клиента, приведен ниже, где %NAME — это просто имя сертификата:
Generate Key with:
$ openssl genrsa -out <%NAME>.key 2048
Generate certificate request with:
$ openssl req -out <%NAME>.csr -key <%NAME>.key -new
Link to main CA:
$ openssl x509 -req -in <%NAME>.csr -CA ../ca/ca.crt -CAkey ../ca/ca.key -CAcreateserial -out <%NAME>.crt -days 365
Допустим, я сгенерировал сертификаты client и client2, затем я могу запустить приведенное ниже на двух разных терминалах на RPi-Host и подключиться без проблем:
Subscribe to MQTT broker:
$ mosquitto_sub -p 8883 --cafile ca.crt --cert client2.crt --key client2.key -h localhost -t /world
Publish to MQTT broker:
$ mosquitto_pub -p 8883 --cafile ../ca/ca.crt --cert client.crt --key client.key -h localhost -m hello! -t /world
Однако, если я изменю -h localhost на 192.168.0.190, то есть IP-адрес, я сразу же получаю:
Error: A TLS Error occurred.
... что не очень полезно!
Цель состоит в том, чтобы попытаться подключиться к этому с отдельной машины, однако я в тупике, просто пытаясь сделать это на той же машине с ее собственным IP-адресом! Нужно ли мне делать что-то необычное в общем имени при создании сертификата? К сожалению, я еще не нашел учебник, в котором рассматривается подключение с использованием mosquitto и TLS на двух разных машинах.
Любые указатели приветствуются, и мне очень жаль, если я упускаю очевидное!
Алекс