Основное упражнение Google Cloud IoT

Я работаю над ядром Google Cloud IoT, и там я столкнулся с проблемой в одном из примеров (сквозной пример), представленных в интерактивных документах: Google Cloud iot упражнение

Есть два сценария, для сервера и устройства, и при запуске сценария устройства я сталкиваюсь с этой проблемой:

3 ответа

Из аргументов командной строки, похоже, что вы передаете rsa_cert.pem, который является вашим закрытым ключом SSL. Как сказал @class, вам нужно создать корневой сертификат Google (wget https://pki.google.com/roots.pem) и затем передать путь к загруженному root.pem для аргумента --ca_certs.

изображение ошибки

Traceback (most recent call last):
  File "cloudiot_pubsub_example_mqtt_device.py", line 249, in <module>
    main()
  File "cloudiot_pubsub_example_mqtt_device.py", line 213, in main
    client.connect(args.mqtt_bridge_hostname, args.mqtt_bridge_port)
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 
768, in connect
    return self.reconnect()
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 
927, in reconnect
    sock.do_handshake()
  File "/usr/lib/python2.7/ssl.py", line 788, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 
(_ssl.c:581)

Возможно, ваш брандмауэр (например, Cloud Shell Machine) блокирует подключение Python через порт 8883. Можете ли вы попробовать вызвать cloudiot_pubsub_example_mqtt_device.py скрипт с портом 443, например

python <your_existing_parameters> --mqtt_bridge_port=443

Вы также можете попробовать использовать пример устройства HTTP для публикации сообщений, поскольку он также не использует порт 8883, который может быть заблокирован в вашей сети.

В моих тестах я смог запустить упражнение из Google Cloud Shell только после установки моего порта на 443, надеюсь, это решит проблему для вас.

Примечание. Если у вас возникли проблемы с проверкой сертификата сервера, вам необходимо загрузить корневой сертификат Google, позвонив по следующему адресу:

wget https://pki.google.com/roots.pem

Обновление Вы также можете попробовать установить версию Python в вашей виртуальной среде на Python 2, настроив виртуальную среду следующим образом:

virtualenv env --python=python2
Другие вопросы по тегам