Indy底层错误14094416的确切含义是什么:SSL例程:ssl3_read_bytes:sslv3警报证书未知

pdkcd3nj  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(671)

当来自浏览器的简单HTTPS请求导致调试器中断并出现以下错误时,Indy中究竟会发生什么情况:
项目PMS_COM.exe引发了异常类EIdOSSLUnderlyingCryptoError,并显示消息“接受SSL连接时出错。
错误:14094416:SSL例程:ssl3_read_bytes:sslv 3警报证书未知“。
网上有人说这是客户端证书错误,其实根本就没有客户端证书!只有服务器端证书。
但是如果我理解错了,这是一个客户端错误,那么为什么它会导致服务器端的异常?
此外,我不明白如何拦截这样的错误。EIdOSSLUnderlyingCryptoError似乎发生在印地的某个地方,没有机会在我的代码中捕获它。

kqlmhetl

kqlmhetl1#

EIdOSSLUnderlyingCryptoError是一个 Package OpenSSL错误消息的Indy异常。
依据SSLv3 alert certificate unknown (4279556)
SSL库向系统发回警报,告知证书链无效。
“sslv 3 alert certificate unknown”(sslv 3警报证书未知)的消息部分通常是指证书链中的中间证书。该证书已过期、无效或不受SSL/TLS通信中涉及的一个或多个系统的信任。
在这种情况下,* 客户端 *(浏览器)会向您的服务器发送一个警报,要求您中止TLS握手,因为您的服务器证书无效。该警报会触发服务器代码中的EIdOSSLUnderlyingCryptoError异常。服务器将为您处理该错误,方法是关闭握手失败的TCP连接端,并终止/回收拥有该TCP套接字的工作线程。
如果要捕获错误,可以使用服务器的OnException事件,该事件在拥有TLS握手失败的TCP连接的同一线程中触发。

相关问题