python - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败
问题描述
我一直在尝试连接到代理一段时间。但是当我使用 dns 时出现以下错误:ssl.SSLCertVerificationError:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'ec2-x-x-x-x.us-east-2.compute.amazonaws.com'. (_ssl.c:1131)
当我使用 ip 地址时,我得到这个:Error ! Result code 5
这是我的代码:
import paho.mqtt.client as mqtt
devEUI = "8CF9572000023509"
appsKey = "6C1E294550045DCF651F4A33F2C01594"
appKey = "2B7E151628AED2A6ABF7158809CF4F3C"
devAddr = "005C0591"
MQTT_HOST = "ec2-x-x-x-x.us-east-2.compute.amazonaws.com"
BROKER_PORT = 2883
MQTT_KEEPALIVE_INTERVAL = 45
def on_log(client,userdata,level,buf):
print("log: ",buf)
def on_connect(client, userdata, flags, rc):
if int(rc) == 0:
print("Succesful connection")
client.subscribe("user/3/device/8cf9572000023509/uplink")
print("Error ! Result code {}".format(rc))
def on_message(client, userdata, msg):
print("ok")
client = mqtt.Client(client_id="",clean_session=True,userdata=None,transport="tcp")
client.tls_set(ca_certs="caCert.pem")
client.username_pw_set(username="xxxx",password="xxxxxxx")
client.on_log = on_log
# Define callback function for successful connection
client.connect(MQTT_HOST,BROKER_PORT,MQTT_KEEPALIVE_INTERVAL)
client.on_message = on_message
client.on_connect = on_connect
client.loop_forever()
证书有效。我怎么解决这个问题?
解决方案
证书有效
可能是这样;但它对“ec2-xxxx.us-east-2.compute.amazonaws.com”有效吗?你得到的错误基本上是说“我向 ec2-xxxx.us-east-2.compute.amazonaws.com 索要它的证书;它给了我一个有效的证书,但它的主机名不同(例如 bad.hacker.com)所以我不会相信它!”。
对于测试,您可以使用该tls_insecure_set()
选项忽略它(请参阅文档)。但是,您确实需要查看证书并检查通用名称 (CN) 和主题备用名称 (SAN)(请参阅此答案)。
您在使用 IP 连接时得到的事实Error ! Result code 5
使我怀疑证书是使用 IP 地址作为 SAN 创建的(因此,当您使用 IP 连接时,证书验证部分正在工作)。错误 5是“连接被拒绝,未授权”,因此您可能需要检查您的用户名/密码(和代理配置)。
推荐阅读
- javascript - http请求前的数据过滤器完全
- python - XPath 计算 /div 中的 svg 元素
- python - IndexError:索引 2048 超出轴 1 的范围,大小为 2
- javascript - 获取使用 jQuery 选中的所有值输入复选框
- java - 通过 MainActivity.java 设置我的 textView 的问题
- php - 即使使用错误的凭据,我的登录页面仍在登录
- celery - 重试后如何保持任务的优先级?
- javascript - Socket.io 聊天服务器
- node.js - 在 node.js 的函数中使用回调
- php - 我如何在 owl-carousel 中使用事件