我們有一個相對較舊的硬件運行客戶端應用程序,該應用程序需要通過TLS 1.0進行Web服務調用。服務器提供CA列表時,客戶端發生TLS 1.0握手問題
服務器有許多不同的客戶端,因此它支持TLS 1.0,1.1和1.2。因此,當服務器發送證書時,它也與CA列表一起。服務器已設置,以便客戶端可以選擇提供證書,但不是必需的。問題是,只要客戶端看到一個CA列表,就會發回一個FIN/ACK(關閉連接)。
這似乎是不正確的行爲。據TLS 1.0 RFC http://tools.ietf.org/html/rfc2246#section-7.4.2
注意,客戶端可以 發送沒有證書,如果沒有適當的證書 響應服務器的驗證請求發送。
推測客戶端正在看到CA的列表,並假設它需要提交證書,並且因爲沒有證書而導致徹底失敗。客戶端在沒有提供CA列表的情況下工作,我們可以通過禁用服務器上的TLS 1.1和1.2來強制執行。不幸的是,這在我們的生產環境中不是一種選擇。
我的問題是上述結論是否正確;客戶是否應該不用證書而不是關閉連接?
如果是這樣,我看到幾個選項:
- 創建客戶端證書並安裝在每個客戶端設備
- 打開服務器僅在一個單獨的端口上允許TLS 1.0這個客戶具體使用。
- 支持票,對供應商的客戶端設備,並希望他們得到它固定或有一個解決方案(懷疑)
我們正朝着選項2傾斜,因爲它是我們最容易實現的解決方案。如果有人有任何其他方式來解決這個問題,我們將非常感激。