2016-06-14 277 views
4

林用Delphi XE2與印第10.5.8.0利用Indy 10 IdHTTP使用TLS 1.2

目前我需要改變我們的服務器只使用一個連接TLS 1.2,此刻我們正在使用TLS 1.0

作爲IdHTTP的處理程序,正在使用IdSSLIOHandlerSocketOpenSSL。

我試圖改變方法sslvTLSv1_2和它不工作作爲連接給出了一個錯誤: 「錯誤與SSL連接錯誤:1409442E:SSL例程:SSL3_READ_BYTES:tlsv 1個警報協議版本」

使用默認密碼列表IM,不知道如果我需要任何特定的加密算法(目前要求到服務器提供商知道他們所使用的密碼)

這是處理程序的配置:

SSLIOHandler Config

我不習慣像以前一樣使用SSL連接,它使用默認設置並且一切正常。

我試圖檢查WireShark,並在兩種情況下(當方法是sslvTLSv1_2或sslvTLSv1)我得到同樣的錯誤指向tls版本1.0。

方法sslvTLSv1:

Method sslvTLSv1

方法sslvTLSv1_2:

enter image description here

請點我在正確的方向,如果我在想念的東西。

非常感謝您提供的所有幫助。

P.S:剛剛收到服務器提供商的迴應,他們使用AES_128_GCM作爲密碼,它是否在默認密碼列表中?

是Wireshark>客戶端Hello包:

enter image description here enter image description here

+2

你的屏幕截圖顯示了致命的TLS警告,但該客戶問候包是什麼樣子?服務器拒絕ClientHello請求的TLS版本。至於密碼,缺省密碼列表在IdSSLOpenSSLHeaders單元的'SSL_DEFAULT_CIPHER_LIST'常量中定義。 –

+4

在任何情況下,10.5.8都是Indy的過時版本。目前的版本是10.6.2(撰寫本文時是5361版)。您應該認真考慮升級,特別是如果您打算使用最新版本的OpenSSL,由於最近的OpenSSL API中斷更改(導致10.5.8無法加載OpenSSL DLL),10.5.8無法再使用該版本。此外,Indy的新版本無論如何都有更好的TLS 1.1和1.2支持。 –

+0

@RemyLebeau謝謝你的回覆,我已經添加了客戶端hello包,會考慮升級indy,看看是否有任何幫助,再次感謝提示。 – vexen

回答

6

萬一有人來通過一個類似的錯誤,在我的情況下,它是正在使用的SSL庫(libeay32,ssleay32)它已過時(2010年)。更新SSL時,它可以正確無誤地運行。

謝謝@RemyLebeau指點,這是一個更新的問題=)