nodejs集群不同的TLS会话处理

问题描述:

我该怎么做:创建多个TLS服务器在同一端口上侦听。每个TLS服务器都有不同的证书集,只应允许某些客户端。例如,第一TLS服务器应该允许客户端X,而不是客户端Y.二TLS服务器应该允许,我有客户端Y和没有客户端X.nodejs集群不同的TLS会话处理

问题是客户端Y和X两者只与第一TLS连接服务器。所使用的TLS证书对于每个客户端都是不同的,由不同的TLS服务器签名,但它们倾向于仅连接到第一台TLS服务器。

想知道关于这个问题的任何想法。

+0

他们有不同的域或高于一切的证书中的其它一样吗? – 2012-02-02 13:18:58

+0

想法是使用相同的域,并根据为其签署证书的服务器区分用户。 – Janon 2012-02-02 15:46:40

这只是设置是行不通的。 cluster API允许多个工作人员共享一个端口,但没有关于哪个工作人员分配给哪个请求的情报。如果没有很多负载,则完全有可能只有一名工作人员会收到所有请求。

我不知道你想做什么,但如果你仔细想想,这种设置是没有意义的。如果您拥有不同的证书,则无法成功设置TLS会话。这就像试图将多个SSL证书绑定到相同的IP一样。

我可以看到这个工作的唯一方法是,如果每个那些不同的证书具有不同的主机名对应。在这种情况下,您可以尝试使用SNI,如http://nodejs.org/docs/latest/api/tls.html#tls.connect所述。但是,每个工作进程仍需要访问相同的证书池。

+1

感谢Rohan的回应。是的,在一些实验中,我得出了关于接收消息的工作线程是随机的相同结论。我将继续使用SNI解决方案,并依靠servername来处理不同的证书。 – Janon 2012-02-02 15:44:50

+0

@Janon听起来不错。有一件事我会对SNI很谨慎,那就是浏览器支持。旧版浏览器和某些Android版本不支持SNI。可能值得研究细节。 – 2012-02-02 15:47:09