我正在构建一个只能由TLS访问的RESTful API。应该在哪里实施SSL连接?
通过RESTful API本身,我的API是用golang编写的,它可以轻松处理SSL。
通过SSL反向代理,这里我使用的是nginx。
我更喜欢第二种方法,因为nginx更好地处理缓存和静态交付。
我现在应该只实现我的API HTTP吗?在我看来,系统是安全的,只要nginx反向代理只提供SSL,而我的API只暴露给nginx。
我不确定是否有第三种方法,而我只保留我的API SSL,而nginx透明地传递所有请求。
答案 0 :(得分:0)
TL; DR:我将在第二个或第三个选项之间进行选择,具体取决于场景。如果要在Internet上发布API,请不要选择第一个。
最安全的选项是第三个:实现您的API以仅允许SSL连接,并使用反向代理发布到Internet。
专业人士即使是内部连接,与您的API通信也是安全的。这将为您提供内部攻击者的保护。缺点是服务器上的额外处理负载,用于管理SSL安全性并且可能会影响性能。
无论如何,你应该寻找成本效益。这就是它取决于场景的原因。例如,如果您的API不会被内部用户访问,但仅针对内部服务,并且服务器上的负载很重,您可以考虑第二种方法:普通HTTP内部通信和Internet的SSL终止。