我正在构建一个python应用程序,客户端将从服务器(也运行python)请求xml页面。相互SSL身份验证 - 客户端和服务器端。 Python - > Django/Twisted/Tornado
我想在木偶配置管理系统上做些事情。木偶工作如下:
1)如果客户端第一次运行,它会生成一个证书签名请求和一个私钥。前者是自签名的x509证书。
2)客户端连接到主服务器(此时客户端未通过认证)并发送CSR,它也会收到CA证书和CRL。
3)主要在本地存储CSR
4)管理员检查CSR并最终签名(通过自动签名可以自动执行此过程)。我强烈建议在此阶段验证证书指纹。
5)客户端正在等待他的签名证书,最终由主人发送。
6)所有下一个通信将使用此客户端证书。主设备和客户端都将通过共享相同的CA来验证对方。
(从http://www.masterzen.fr/2010/11/14/puppet-ssl-explained/)
,我不知道该怎么做的主要事情是:
- 这是最好的库使用?
- 在服务器端使用什么?在Apache/nginx后面的Django能够在第一次运行时签署证书,然后使用证书进行身份验证,或者我需要在前端使用类似扭曲的东西?
- 发送CSR的最佳方式是发送到服务器的POST?
- 是否有人知道是否有一些代码示例可以覆盖客户端和服务器端?
- 有没有其他方法可以在客户端/服务器之间建立可信连接而无需人工迭代(web服务之间进行身份验证的最佳实践是什么)?
谢谢!我会看看你链接的软件包。关于信任,是的。在获得CSR后,我们的想法是,负责客户的人员将登录并签署该特定客户的证书。关于django的用法,我的疑问是,如果我能够在随后的请求中检查证书。 – 2012-03-23 16:28:23
@Leon:您会为Django编写身份验证中间件(在Django代码库中有远程用户身份验证的示例,您可以使用SSL证书执行相同操作)。在中间件中,您可以从请求对象获取证书,然后使用它进行身份验证。然后,您将看到新客户可以发送不需要身份验证的CSR的另一个视图。 – cha0site 2012-03-23 16:48:52