我如何使用Python的socketserver.TCPServer强制执行相互认证?

问题描述:

我想将一个用Python编写的简单TCP服务器公开给互联网。为了验证客户端,我想依靠客户端和服务器证书。 socketserver.TCPServer默认支持这种模式吗?如果没有,你能建议如何扩展服务器来实现相互认证吗?我如何使用Python的socketserver.TCPServer强制执行相互认证?

默认库不处理安全套接字(SSL/TLS)。假设你想要使用特定的库,无论如何,here's another discussion that shows a way to do it using the OpenSSL libraries

如果您想编写服务器应用程序,您可能需要使用Twisted,这是一个面向事件的框架,用于在Python中编写网络应用程序。以下是how to enable SSL for a TCP server的相关文档。

+0

谢谢你的指点。我已经在'TCPServer'上看到SSL'wrap'方法来启用SSL。但是这不会启用相互认证,只是服务器认证。你是否碰巧知道相互认证? –

+0

wrap_socket调用中有一个cert_reqs参数,用于控制证书是否为可选或从另一端需要:http://docs.python.org/2/library/ssl.html#ssl.wrap_socket – GomoX

+0

这就是我在寻找。谢谢! –