使用 Python 连接 Redis,想用自签证书启用 tls 协议报错

查看 20|回复 0
作者:Richard14   
用的 python 库是 redis-py
Redis 那边不太清楚配置正确没有,但是总归是正常跑起来提供服务了,但是客户端这边连接总是提示失败,大神帮忙看看哪里的问题。
我的步骤:
1.openssl 生成一个 rsa2048 的随机 key ,
2.将该 key 计算成公钥并包装成 CA 证书:ca.crt
3.openssl 再生成一个随机 key: server.key
4.生成请求证书文件
5.用刚才的 ca 证书生成一个认证后的证书:server.crt
用这三个文件启动 redis 的 tls 是成功了,但是 redis-py 客户端输入同样三个文件,连接会报错
conn = redis.Redis(
    host='localhost',
    port=6666,
    ssl=True,
    ssl_certfile='server.crt',
    ssl_keyfile='server.key',
    ssl_cert_reqs="required",
    ssl_ca_certs='ca.crt'
)
错误提示
File "C:\Program Files\Python310\lib\site-packages\redis\asyncio\connection.py", line 1038, in get
    context.load_cert_chain(certfile=self.certfile, keyfile=self.keyfile)
ssl.SSLError: [X509: KEY_VALUES_MISMATCH] key values mismatch (_ssl.c:3895)
尝试使用 redis-cli 按如下命令连接,发送命令会自动断连,也是错了
redis-cli -p 6666 --cert ./server.crt --key ./server.key --cacert ./ca.crt
搞不是太懂本地自签证书挂服务是个什么原理,正常来说 ssl 不是私钥自己持有,公钥互换公开么。服务端要求输入 keyfile 还能理解,为什么客户端也要输入 keyfile ?但是我试了试客户端把公私钥反过来照样连不上啊
您需要登录后才可以回帖 登录 | 立即注册

返回顶部