昨天,突然間,我的一個(gè) Delphi 程序無法連接到互聯(lián)網(wǎng)上的各種WMS服務(wù)器。我收到以下錯(cuò)誤消息:
使用 SSL 連接時(shí)出錯(cuò)。錯(cuò)誤 1409442E:SSL 例程:ssl3_read_bytes:tlsv1 警報(bào)協(xié)議版本
由于我使用的是最新版本的Indy,根據(jù)Delphi Praxis 上的此線程,這種情況不應(yīng)該發(fā)生。事實(shí)證明,不知何故,一個(gè)非常舊版本的 openssl DLL?libeay32.dll和ssleay32.dll已被放置在我計(jì)算機(jī)上的 sarch 路徑中(版本 1.0.0e)。獲取托管在GitHub或indy.fulgan.com上的最新版本并將它們放入我的程序Z-Gantt時(shí)間管理進(jìn)度計(jì)劃甘特圖軟件的可執(zhí)行目錄中解決了這個(gè)問題。
好吧,那么我是怎么發(fā)現(xiàn)情況是這樣的(除了谷歌搜索猜測(cè)之外)?
IdSSLOpenSSL 單元中有一個(gè)函數(shù) OpenSSLVersion,它返回 OpenSSL dll 的版本。在撰寫本文時(shí),該名稱應(yīng)以“OpenSSL 1.0.2u”開頭。
還可以使用兩個(gè) DLL 的句柄調(diào)用 GetModuleName(分別通過函數(shù) GetSSLLibHandle 和 GetCryptLibHandle 獲得),為您提供實(shí)際加載的 DLL 的完整路徑。當(dāng)然,要使其工作,DLL 必須已加載,但調(diào)用 OpenSSLVersion 可以為您完成此操作。
OpenSslVer := IdSSLOpenSSL.OpenSSLVersion;
OpenSslLibName := GetModuleName(GetSSLLibHandle);
OpenSslCryptLibName := GetModuleName(GetCryptLibHandle);
我希望這對(duì)其他人有用,因?yàn)槲一艘欢螘r(shí)間才弄清楚如何獲取這些信息。文章來源:http://www.zghlxwxcb.cn/news/detail-717440.html
@Remy Lebeau:非常感謝您已經(jīng)投入并仍在投入這個(gè)庫的所有工作。文章來源地址http://www.zghlxwxcb.cn/news/detail-717440.html
到了這里,關(guān)于Delphi解決 openssl DLL 與 Indy 的SSL/TLS 連接問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!