我已經瀏覽了因特網,但未找到有關如何通過使用TIdHTTP通過HTTPS進行連接時驗證證書的解決方案或方法。Delphi Indy驗證服務器證書SSL
我連接了一個IdSSLIOHandlerSocketOpenSSL組件作爲IOHandler,設置SSLModes等,但是當我瀏覽到https://s3.amazonaws.com時,它無法驗證證書。
OpenSSL的(印)給出
「使用SSL連接SSL3_GET_SERVER_CERTIFICATE錯誤:證書驗證失敗」
OpenSSL庫已成功加載(檢查與WhichFailedToLoad)。該OnStatusInfo事件寫入以下內容:
SSL狀態: 「前/連接初始化」
SSL狀態: 「前/連接初始化」
SSL狀態 「的SSLv2/v3的寫客戶端問候A」
SSL狀態: 「讀SSLv3的服務器問候A」
SSL狀態: 「SSLv3的讀取服務器證書B」
SSL小號tatus: 「SSLv3的讀取服務器證書B」
SSL狀態: 「SSLv3的讀取服務器證書B」
而且OnVerifyPeer,AOK =假。
我怎樣才能得到它的正確驗證。這是怎麼回事?
感謝您的閱讀, 阿德里安
這是錯誤的。 Indy默認不知道根證書。這使你容易受到MitM攻擊。您至少需要設置'VerifyMode','VerifyDepth'和'RootCertFile'來完成安全連接。之後,您可以將'AOk'返回任意深度,因爲OpenSSL爲您做了正確的事情。 – TobiX