【问题标题】:getting ssl.SSLError: [X509] no certificate or crl found (_ssl.c:4062) in python获取 ssl.SSLError: [X509] no certificate or crl found (_ssl.c:4062) in python
【发布时间】:2020-12-26 18:21:53
【问题描述】:

我正在使用 paho.mqtt 库与 aws iot 核心连接,但我无法连接,并且出现以下错误

ssl.SSLError: [X509] 找不到证书或 crl (_ssl.c:4062)

谁能帮我弄清楚。

import paho.mqtt.client as paho
import os
import socket
import ssl
from time import sleep
from random import uniform

connflag = False

def on_connect(client, userdata, flags, rc):                # func for making connection
   global connflag
   print ("Connected to AWS")
   connflag = True
   print("Connection returned result: " + str(rc) )

def on_message(client, userdata, msg):                      # Func for Sending msg
   print(msg.topic+" "+str(msg.payload))



mqttc = paho.Client()                                       # mqttc object
mqttc.on_connect = on_connect                               # assign on_connect func
mqttc.on_message = on_message                               # assign on_message func
#mqttc.on_log = on_log

#### Change following parameters #### 
awshost = "endpoint"      # Endpoint
awsport = 8883                                              # Port no.   
clientId = "nodemcu"                                     # Thing_Name
thingName = "nodemcu"                                    # Thing_Name
caPath = "C:/Users/pc/Desktop/instagram/aws_lambda/certi/public.pem.key"                                      
# Root_CA_Certificate_Name
certPath = "C:/Users/pc/Desktop/instagram/aws_lambda/certi/certificate.pem.crt"                            
# <Thing_Name>.cert.pem
keyPath = "C:/Users/pc/Desktop/instagram/aws_lambda/certi/private.pem.key"                          # 
<Thing_Name>.private.key

mqttc.tls_set(caPath, certfile=certPath, keyfile=keyPath, cert_reqs=ssl.CERT_REQUIRED, 
             tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)  # pass parameters

mqttc.connect(awshost, awsport, keepalive=60)               # connect to aws server

mqttc.loop_start()                                          # Start the loop

while 1==1:
    sleep(5)
    if connflag == True:
       tempreading = uniform(20.0,25.0)                        # Generating Temperature Readings 
       mqttc.publish("temperature", tempreading, qos=1)        # topic: temperature # Publishing 
       Temperature values
        print("msg sent: temperature " + "%.2f" % tempreading ) # Print sent temperature msg on 
                                                                       console
   else:
     print("waiting for connection...")                      

谢谢

【问题讨论】:

  • 你在 jupyter notebook 中运行代码吗?
  • 我正在使用 pycharm

标签: python amazon-web-services mqtt aws-iot


【解决方案1】:

caPath 肯定是不正确的。它需要是亚马逊根 ca 你可以google一下。

【讨论】:

    【解决方案2】:

    【讨论】:

    • "ca" 代表“CertificAte”?我认为正常的缩写 CA 代表“证书颁发机构”;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2019-09-28
    相关资源
    最近更新 更多