我已经浏览了因特网,但未找到有关如何通过使用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