我正在使用Pylons框架在Python中构建一个RESTful API,使用Apache2和mod_wsgi为其提供服务,并希望将其连接到iPhone应用程序。我对HTTPS,SSL和证书颁发机构几乎没有经验,我想知道如何保护我的API。
如何确保API是通过HTTPS提供的?是否有必要像本例中那样设置SSL证书?如果我通过iOS无法识别的授权机构签署SSL证书(例如CACert.org,主要是因为它是免费的),这会影响我的应用程序与我的服务器通信的能力吗?其他人是如何解决基于Web的RESTful API和iPhone应用程序之间的安全通信问题的?
另外,OAuth是如何融入这一切的?
2条答案
按热度按时间8fsztsew1#
这实际上取决于“保护”您的API的含义。
你的意思是你想A)保护它,使未经授权的人无法访问API或B)你的意思是你想对客户端和服务器之间来回传递的数据进行某种程度的加密?
如果答案是B或两者都是,那么你肯定需要看看如何获取SSL证书并将其安装在服务器上。大多数证书颁发机构都有关于如何做到这一点的指南。
我不知道你所说的“一个不被iOS认可的权威机构”是什么意思,但你仍然应该考虑从一个认可的权威机构那里购买证书。如果他们提供免费证书,尝试CACert.org仍然不会有什么坏处。我真的看不出服务器和客户端之间的通信能力受到影响有任何问题。
在保护您的API免受未经授权的客户端攻击方面,您可以查看OAuth(参见http://oauth.net/)。有各种OAuth的Python库。例如,查看https://github.com/simplegeo/python-oauth2。您可能需要考虑的唯一一件事是,在实现OAuth时,有一个合理的学习曲线。
上面的第二个链接演示了一个简单的OAuth客户端,还有一个三腿身份验证过程的示例代码。
7ivaypg92#
您可以在iOS中以编程方式处理证书。只要您的代码确认指纹,您甚至可以使用自签名证书。我记不清细节了,但我知道您可以使用didReceiveAuthenticationChallenge来做到这一点。
从长远来看,购买证书更简单(cacert.org不会这样做)。