8
我正在使用TIdSSLIOHandlerSocketOpenSSL打開TLS/SSL連接。我目前想要支持1.0到1.2。如何確定在使用sslvSSLv23時協商哪個TLS/SSL協議?
我像這樣初始化IOHandler。
TIdSSLIOHandlerSocketOpenSSL(FSocket.IOHandler).SSLOptions.SSLVersions := [sslvTLSv1_2,sslvTLSv1_1, sslvTLSv1];
建立連接後,如何獲得連接協商的協議? (兩者都用於確保客戶端和測試服務器的配置是正確的,並最終用於統計目的)。
我在連接後檢查了SSLContext.Method
,但連接後仍然顯示sslvSSLv23
。 SSLContext.SSLVersions
顯示[sslvTLSv1_2,sslvTLSv1_1, sslvTLSv1]
。
那麼我如何獲得這些信息呢?
'Cipher.Version'似乎不包含當前使用的協議(或者我嚴重缺少某些東西)。例如,如果我強制在客戶端上使用TLS1.1,則「Cipher.Version」將返回「TLSv1/SSLv3」。我將研究SSL_get_version。 –
SSL_get_version的確給我提供了我正在尋找的信息。謝謝。 –
@KenBourassa hmm,'SSL_CIPHER_get_version()'不是那種方式,但它看起來像[documentation](https://www.openssl.org/docs/manmaster/man3/SSL_CIPHER_get_version.html)已經改變自從我上次看到它以來,行爲顯然隨着時間而改變。在這種情況下,堅持使用'SSL_get_version()'。我可能會爲它整合一個新的屬性。 –