【问题标题】:Python SSL Socket Client AuthentificationPython SSL 套接字客户端身份验证
【发布时间】:2012-12-15 19:36:03
【问题描述】:

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

我意识到这没什么好做的,但是如果有人可以解释对该示例的基本修改,以使服务器对客户端进行身份验证而不是相反,那就太棒了。或者,一个示例的链接甚至只是一些要研究的套接字方法将非常有帮助。如果需要更多信息,请告诉我。我并不是要含糊其辞,并保证我整个上午都在寻找自己的信息:)。

编辑:我正在尝试使用基本的 ssl 库。又名“导入 ssl”。

【问题讨论】:

    标签: python ssl certificate


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 据我了解,我链接的示例中的代码让服务器向客户端发送其证书。客户端然后根据其证书链检查证书,以确保服务器可以连接到。我需要做相反的事情。我需要客户端向服务器发送其证书,让服务器根据其允许列表检查客户端的证书,最后完成与客户端的握手。我会继续阅读……也许我没有我想的那么多。感谢您的链接。
      猜你喜欢
      • 2012-06-17
      • 2021-04-22
      • 2014-09-15
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 2014-08-24
      相关资源
      最近更新 更多