0

我正在研究谷歌云物联网核心,我在在线文档中提供的一个示例(端到端示例)中遇到了一个问题:谷歌云物联网练习

有两个脚本,用于服务器和设备,在运行设备脚本时我遇到了这个问题:

4

3 回答 3

1

从命令行参数看来,您正在传递 rsa_cert.pem,这是您的 SSL 私钥。正如@class 所说,您需要获取谷歌根证书(wget https://pki.google.com/roots.pem),然后将路径传递给下载的roots.pem 以获取--ca_certs 参数。

于 2017-10-30T15:43:25.400 回答
0

错误图像

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)
于 2017-10-12T10:15:56.400 回答
0

您的防火墙(例如 Cloud Shell Machine)可能阻止 Python 通过端口 8883 进行连接。您可以尝试cloudiot_pubsub_example_mqtt_device.py使用端口设置为 443 来调用脚本,例如

python <your_existing_parameters> --mqtt_bridge_port=443

您可能还想尝试使用HTTP 设备示例发布消息,因为它也不使用端口 8883,这可能在您的网络上被阻止。

在我的测试中,我只能在将端口设置为 443 后从 Google Cloud Shell 运行练习,希望这可以为您解决问题。

注意如果您在验证服务器证书时遇到问题,您需要通过调用以下方式下载 Google 根证书:

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

更新您可能还想尝试将虚拟环境中的 Python 版本设置为 Python 2,方法是将虚拟环境设置为:

virtualenv env --python=python2
于 2017-10-11T19:06:34.143 回答