我該怎麼做:創建多個TLS服務器在同一端口上偵聽。每個TLS服務器都有不同的證書集,只應允許某些客戶端。例如,第一TLS服務器應該允許客戶端X,而不是客戶端Y.二TLS服務器應該允許,我有客戶端Y和沒有客戶端X.nodejs集羣不同的TLS會話處理
問題是客戶端Y和X兩者只與第一TLS連接服務器。所使用的TLS證書對於每個客戶端都是不同的,由不同的TLS服務器簽名,但它們傾向於僅連接到第一臺TLS服務器。
想知道關於這個問題的任何想法。
我該怎麼做:創建多個TLS服務器在同一端口上偵聽。每個TLS服務器都有不同的證書集,只應允許某些客戶端。例如,第一TLS服務器應該允許客戶端X,而不是客戶端Y.二TLS服務器應該允許,我有客戶端Y和沒有客戶端X.nodejs集羣不同的TLS會話處理
問題是客戶端Y和X兩者只與第一TLS連接服務器。所使用的TLS證書對於每個客戶端都是不同的,由不同的TLS服務器簽名,但它們傾向於僅連接到第一臺TLS服務器。
想知道關於這個問題的任何想法。
這只是設置是行不通的。 cluster API允許多個工作人員共享一個端口,但沒有關於哪個工作人員分配給哪個請求的情報。如果沒有很多負載,則完全有可能只有一名工作人員會收到所有請求。
我不知道你想做什麼,但如果你仔細想想,這種設置是沒有意義的。如果您擁有不同的證書,則無法成功設置TLS會話。這就像試圖將多個SSL證書綁定到相同的IP一樣。
我可以看到這個工作的唯一方法是,如果每個那些不同的證書具有不同的主機名對應。在這種情況下,您可以嘗試使用SNI,如http://nodejs.org/docs/latest/api/tls.html#tls.connect所述。但是,每個工作進程仍需要訪問相同的證書池。
感謝Rohan的迴應。是的,在一些實驗中,我得出了關於接收消息的工作線程是隨機的相同結論。我將繼續使用SNI解決方案,並依靠servername來處理不同的證書。 – Janon 2012-02-02 15:44:50
@Janon聽起來不錯。有一件事我會對SNI很謹慎,那就是瀏覽器支持。舊版瀏覽器和某些Android版本不支持SNI。可能值得研究細節。 – 2012-02-02 15:47:09
他們有不同的域或高於一切的證書中的其它一樣嗎? – 2012-02-02 13:18:58
想法是使用相同的域,並根據爲其簽署證書的服務器區分用戶。 – Janon 2012-02-02 15:46:40