gpt4 book ai didi

ssl - websocket服务器不接受签名的客户端证书

转载 作者:行者123 更新时间:2023-12-04 22:43:16 24 4
gpt4 key购买 nike

想要在构建其 ssl 上下文的 python websocket 服务器中设置身份验证,例如:

ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ctx.load_cert_chain('certificates/server_cert.pem', 'certificates/server_key.pem')
ctx.verify_mode = ssl.CERT_REQUIRED
ctx.load_verify_locations('certificates/bob_cert.pem')
按照 here 中的示例进行操作(仅用于创建证书)我创建了三个 key 对和证书,一个用于 websocket 服务器和两个客户端证书。如示例中所述,我使用服务器证书签署了 alice 的证书,而 bob 的证书是自签名的。
如果我现在通过 bob 的证书连接并设置 verify_locations在上面的服务器中,鲍勃神奇地进入服务器(它不会做更多的事情然后回显你发送的内容)。
但是,如果我通过 alice 的证书(由服务器证书签名)连接,我不会被接受 - 得到 ConnectionResetError ,参数 verify_locations在上面的代码中当然设置为接受 alice_cert.pem。为了完成,您可以在下面找到客户端的 ssl 上下文创建代码(这里是 bob):
ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ctx.check_hostname = True
ctx.load_verify_locations('certificates/server_cert.pem')
ctx.verify_mode = ssl.CERT_REQUIRED
ctx.load_cert_chain('certificates/bob_cert.pem', 'certificates/bob_key.pem')
我做错了什么或者我在哪里误解了我遵循的教程(上面的链接),bob(ISSUER CN = bob,SUBJ CN = bob)使用的不相关(与服务器证书)自签名证书如何获得访问权限,而由服务器证书 (ISSUER CN=localhost, SUBJ CN=alice) 签名的 alice 证书会被拒绝吗?

最佳答案

好的,问题找到了。作为example声明,人们应该将 server_cert.pem 放入 load_verify_locations在 websocket 服务器 ssl 上下文中。这样做时现在可以按预期工作.. Alice 进入,Bob 没有。

关于ssl - websocket服务器不接受签名的客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62471819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com