2016-12-12 31 views
1

我正在使用AWS ELB作爲入口點(在代理模式下),以便從其中流量進一步到達MQTT代理的位置後面的2個HAProxy-es之間進行負載平衡。HAProxy上的AWS ELB背後的TLS終止(tcp模式)

  1. 這些2 HAProxies負責客戶TLS終止(2方式TLS)。

  2. 證書是一種工作。我在兩臺服務器之間進行了本地安裝測試。我已經能夠使用雙向TLS進行發佈,正確地終止它,並將消息發佈到mqtt。將所有內容移至AWS時都會出現問題。

  3. 我正在使用自簽名根CA,中間CA,服務器證書和客戶端證書。使用橢圓曲線...

  4. 問題可能是由於服務器CN造成的。我認爲它必須與連接到像mosquitto_pub這樣的工具的主機名相同。

  5. 我得到的錯誤是TLS錯誤,只有調試 - > ssl握手失敗。不知何故,我無法產生更詳細的錯誤。使用openssl和s_client並調試最大調試輸出。哪些產生我ssl握手失敗。

我真的很感激任何提示/建議。

在此先感謝。

Tomaz

+0

AWS ELB和HAProxy的提供非常相似的功能。你使用兩者的理由是什麼?爲什麼不讓ELB直接進入MQTT服務器?此外,我看不到你所指的錯誤信息 - 有沒有很多呢? – njh

+0

@njh動機可能是OP所稱的「雙向TLS」 - 通過後向edd驗證客戶端證書。 ELB不直接支持這一點,它必須處於透明TCP模式,並讓後端(本例中爲HAProxy)處理TLS。 –

+0

是的,服務器證書中的CN必須與客戶端用來訪問服務器的主機名相匹配。您還需要在ELB上擁有* no *證書。你可能會暫時從混音中刪除ELB,這樣你一次只能排除一件事。 –

回答

0

我使用subjectAltName特性解決了這個問題。我編輯了openssl.cnf並添加了新的部分[alt_names],稍後在配置中引用它。在alt_names下,我添加了1個DNS密鑰和2個IP。找到man x509v3_config

最佳, 托馬日