使用 Twisted 框架进行网络编程,第 4 部分
2008-11-13 13:13:47 来源:WEB开发网在第1、2和3部分中,服务器与客户机具有的共同之处在于它们的操作完全是在一个经过编码的明文会话中进行的。不过在有些时候,您还会希望您的连接能够避开窥视者的眼睛(或者免遭窜改与欺骗)。
用于决定是否允许访问服务器资源的协议是很有意思的,但是在这一部分中,我还是想考虑一下与真正的连接级加密有关的协议。不过在一般的应用背景中,您也许可以研究一下面向Web的机制,例如 RFC-2617 中描述的 Basic Authentication,它在 Apache 和其他的 Web 服务器中都实现了。Twisted 包 twisted.cred 是一种通用且复杂的框架,它在用于一般目的的 Twisted 服务器中提供认证服务器,而并不局限于 Web 服务器。
在 Internet 上进行连接级的加密,有两种广泛应用的 API:SSL 和 SSH。前面一种,SSL(Secure Sockets Layer,安全套接字层),在 Web 浏览器和 Web 服务器中广泛实现;不过从原理上说,SSL并没有理由非得结合到 HTTP 协议上不可。SSL 结合了一种公钥基础设施,连同一个基于 Certificate Authorities 的“可信 Web”(“web-of-trust”)。SSL 会创建一个会话密钥,在某个特定连接的整个生命期中,SSL 都用这个密钥对其进行标准的对称加密。
Twisted 中的确包括了 SSL 框架;不过就和 Twisted 中的大多数东西一样,没有详细的文档来说明 SSL 是如何工作的。我试着下载了两个可能支持的包,尝试让 Twisted v.1.0.6 的脚本 test_ssl.py 运行起来(请看 参考资料),不过在撰写本文的时候还没有成功。
另一个广泛应用于连接级加密的 API 是 SSH(Secure Shell,安全Shell),它因与其同名的那个工具(小写的 ssh )而出名。SSL 与 SSH 共享了很多底层加密算法,不过 SSH 着重于建立加密的 shell 连接(用以取代那些容易受到窥探的程序/协议,比如 telnet 和 rsh)。Twisted 使您能够编写定制的 SSH 客户机和服务器,这可是件非常好的事情。您不仅可以编写一个基本的交互式远程 shell,就好像 ssh 和 sshd 提供的客户机与服务器一样,而且您还可以创建专用性更强的工具,让更高层的应用能够利用这些安全连接。