如何测试indy smtp和pop3服务器的SSL证书?

如何测试indy smtp和pop3服务器的SSL证书?,ssl,smtp,indy,pop3,Ssl,Smtp,Indy,Pop3,有人能告诉我一种有效的方法来测试我的自签名SSL证书是否正常工作吗?我的应用程序中有TIdSMTPServer和TIdPOP3Server以及TIdServerIOHandlerSSLOpenSSL,我这样做: IdServerIOHandlerSSLOpenSSL1.SSLOptions.CertFile := 'myCert.crt'; IdServerIOHandlerSSLOpenSSL1.SSLOptions.RootCertFile := 'myCert.crt'; IdServer

有人能告诉我一种有效的方法来测试我的自签名SSL证书是否正常工作吗?我的应用程序中有TIdSMTPServer和TIdPOP3Server以及TIdServerIOHandlerSSLOpenSSL,我这样做:

IdServerIOHandlerSSLOpenSSL1.SSLOptions.CertFile := 'myCert.crt';
IdServerIOHandlerSSLOpenSSL1.SSLOptions.RootCertFile := 'myCert.crt';
IdServerIOHandlerSSLOpenSSL1.SSLOptions.KeyFile := 'myKey.key';
POP3Server.IOHandler := IdServerIOHandlerSSLOpenSSL1;
SMTPServer.IOHandler := IdServerIOHandlerSSLOpenSSL1;
SMTPServer.Bindings.Add.Port := 465;
POP3Server.Bindings.Add.Port := 995;

然后,我通过SSL端口(smtp-465、pop3-995)发送/接收一些电子邮件,但我不知道如何测试我的证书是否实际连接到smtp和pop3服务器,以及它们是否为我提供了客户端和服务器之间的SSL连接

证书不提供SSL连接。它们只是提供身份验证,以便客户端可以验证它是否正在与它认为正在与之通信的服务器进行通信,反之亦然,而不是中间人攻击者。SSL不需要证书。连接到受SSL保护的端口这一事实足以建立SSL连接,证书只是额外的保护。顺便说一句,如果您使用的是Indy 10,则需要在服务器的OnConnect事件中手动激活SSL,方法是将接受的客户端连接的
TIdSSLIOHandlerSocketBase(IOHandler)。PassThrough
设置为False,否则,连接将不会被加密。这是经过设计的,因此如果要在同一服务器上同时运行SSL和非SSL端口,则可以检查客户端连接到的端口。Indy 9不允许您这样做,默认情况下,SSL始终处于活动状态,如果您将SSL IOHander分配给服务器,则无论使用哪个端口。@RemyLebeau-是的,我使用的是Indy 10,但是我没有完全理解向我的两个onconnect事件中添加什么-您能提供一个示例,说明我的代码在这两个事件中应该是什么样子的吗:过程Pop3ServerConnect(AContext:TIdContext);开始{管理ssl连接}结束;过程SMTPServerConnect(AContext:TIdContext);开始{管理ssl连接}结束@RemyLebeau-如果我键入这个tidsLioHandlerSocketBase(AContext.Connection.IOHandler).PassThrough:=False;在我的两个服务器onconnect事件中,我的应用程序停止发送/接收带有客户端错误“连接正常关闭”的电子邮件。我做错了什么?仔细检查IOHandler是正确的类类型,客户端在正确的端口上。例如,SMTP:
如果AContext.Connection.IOHandler是tidsliohandlersocketbase,那么tidsliohandlersocketbase(AContext.Connection.IOHandler).PassThrough:=(AContext.Binding.Port 465)放置一个断点并逐步通过它,以确保一切都是应该的。