我想限制我的网络服务访问注册客户端。我想到的第一件事就是模仿AWS的内容,简而言之,它向客户端发出非秘密和密钥对,并要求客户端通过使用某些HTTP请求的加密函数来证明密钥的知识。数据和密钥,然后在请求头中指定加密函数的输出。 AWS执行相同操作并检查预期签名是否与客户端指定的签名匹配。这个秘密没有传播,等等等等。这是非常典型的,虽然有用但并不那么有趣。
http://mws.amazon.com/docs/devGuide/Signatures.html
我首选的网络服务网络服务器是nginx。我想在某些服务中开始要求类似的请求签名。在将请求发送到上游进程(我的Web服务实例)之前,创建一个处理请求签名验证的nginx模块是有意义的。
你知道这样的nginx模块吗?你知道我可以根据自己的工作做出不同的事吗?
这里有一个不错的nginx模块编写指南:
http://www.evanmiller.org/nginx-modules-guide.html
请注意,我不询问“如何编写nginx模块?”我只是想避免重新发明轮子。
谢谢!
答案 0 :(得分:0)
如果我理解正确,您只需检查带有if($http_{yourheader}){}
的自定义标头,并针对后端(例如memcached)或代理fastcgi脚本进行验证,甚至使用嵌入式perl脚本(尽管这将是缓慢的并且可以阻止。)
AFAIK没有任何特定的standard或third-party模块执行此操作,但它们的组合可以提供合适的解决方案(例如; $http_{header}
+ redis后端,例如)。
您是否有特殊原因想要使用自定义SSL证书?它们似乎是一种适当的解决方案,可以通过增加安全性来限制访问。