Python SSL套接字客户端身份验证

时间:2012-12-31 18:39:33

标签: python ssl certificate

我正在尝试在python中设置服务器和客户端,其中服务器使用带证书的SSL对客户端进行身份验证。在线有很多SSL证书的例子,但我发现的一切都是服务器向客户端提供证书,客户端检查证书。我需要服务器来确保客户端有权连接到服务器。我了解如何生成和发送证书以及它们如何工作的基础知识。我会输入我的代码,但是没有SSL的客户端/服务器工作正常,我一直在引用this来获取SSL。该页面底部的客户端/服务器示例总结了我对python中SSL证书的理解。

我意识到这并不多,但是如果有人可以解释对该示例的基本修改以使服务器对客户端进行身份验证而不是相反,那将是非常棒的。或者,链接到示例或甚至只是一些插槽方法进行调查将非常有帮助。如果需要更多信息,请与我们联系。我并不是要模糊,并承诺我整个上午都在寻找信息:)。

编辑:我正在努力坚持基本的ssl库。 Aka“import ssl”。

2 个答案:

答案 0 :(得分:3)

您可以使用SSLSocket.getpeercert来获取证书。客户端需要在包装套接字时指定密钥和证书,就像服务器端一样。在服务器端,您还需要传递ca_certs =“path_to_ca_cert_file”,并且可能还需要指定cert_reqs = CERT_REQUIRED(参见ssl.wrap_socket的.args。

除此之外,听起来您可能正在寻找基于证书的客户端身份验证/授权?这是一个简单的问题,即使用getpeercert获取客户端证书并访问证书中的字段以在正常的身份验证路径中使用(即公共名称==用户ID)

答案 1 :(得分:0)

不确定您的问题所指的是什么,但是您可以看到SSL in Pythonother resource for SSL in PythonValidating SSLget SSL Certificate information,并且您可能找到了其他良好的链接。