创建SSL服务器套接字终止符

时间:2018-03-13 11:02:32

标签: php nginx epp

我需要将EPP(基于会话的协议 - https://tools.ietf.org/html/rfc5734)转换为基于HTTP请求/响应的协议(JSON)。 JSON部分已经编码,并且正在与少数客户合作。

我使用websockets查看了nginx,但是对于原始EPP协议,websockets看起来太高了。

我需要解决以下过程:

  1. nginx终止SSL TCP连接
  2. 读取EPP请求(XML) - 最好是PHP
  3. 转换为JSON并将其发送到HTTP服务器
  4. 阅读结果
  5. 转换为XML并将其发送回EPP连接
  6. nginx中是否有推荐的技术来实现这一目标?我可以在没有太多麻烦的情况下编写PHP套接字服务器。

1 个答案:

答案 0 :(得分:0)

所以你正在构建一个EPP服务器?欢迎来到EPP世界,从出生以来甚至在此之前的某个人: - )

EPP是一种使用XML over TLS的“简单”协议(通常,有一些基于HTTPS的实例,在起草期间,它们是其他提议,例如通过SMTP或BXXP)。

因此,作为服务器,您需要能够处理TLS终止和读取XML的东西。这可以用任何语言表达,而不是火箭科学。当然,魔鬼在于细节。并且您没有提供足够的详细信息/上下文来确切了解您可能遇到的限制或具体问题。 所以你可能会有点偏离主题,因为如果你想让人们帮助你,那么编写一个处理TLS和阅读XML的简单服务器就需要在这里显示为代码。

请务必多次阅读RFC 5734有关具体运输注意事项的信息。当然,您需要记住它是一个有状态协议,因此如果您通过无状态协议在内部“转发”请求,则需要进行某种身份验证。

你不需要websockets,实际上我不明白你为何会这么说。您只需要TLS终止,而不是HTTPS终止。

看看HAProxy,这是一个受欢迎的处理程序。

但同样,根据您的特定(未知)约束(特定客户端数量,查询量,所需SLA等),只需stunnel这样简单就足够了。

请注意,您有mod_epp for Apache。也许不是很活,但可以给你一些想法。当服务器实际上接收到EPP帧而不是HTTP帧时,它允许在Apache下使用任何CGI程序。

作为旁注,除了安全性(但应该由RFC5734涵盖),我建议您注意编码,XML命名空间,并避免在同一个流中使用多个序列化机制(XML中的JSON是一个坏的想法就像JSON中的XML一样,但我不知道你的“转换”部分是如何工作的。