实现SSL/TLS/AUTO

实现SSL/TLS/AUTO,ssl,openssl,Ssl,Openssl,我正在使用openssl向我的电子邮件客户端添加TLS/SSL选项。可以选择3个选项:自动、TLS、SSL(类似于Outlook Express的“加密连接选项”) 我很好奇,当选择“自动”选项时,它应该如何工作? 如何为特定邮件服务器选择最佳选项? 如果我必须按优先级逐个尝试这些选项(可能是TLS->SSL->none),我如何检查尝试是否失败 欢迎提供任何建议。首先,根据端口号进行确定。IMAP的安全电子邮件端口为993,POP3的安全电子邮件端口为995。因此,如果要连接到这些端口中的任何

我正在使用openssl向我的电子邮件客户端添加TLS/SSL选项。可以选择3个选项:自动、TLS、SSL(类似于Outlook Express的“加密连接选项”)

我很好奇,当选择“自动”选项时,它应该如何工作?
如何为特定邮件服务器选择最佳选项?
如果我必须按优先级逐个尝试这些选项(可能是TLS->SSL->none),我如何检查尝试是否失败


欢迎提供任何建议。

首先,根据端口号进行确定。IMAP的安全电子邮件端口为
993
,POP3的安全电子邮件端口为
995
。因此,如果要连接到这些端口中的任何一个,请使用TLS或SSL进行连接

如果端口号为标准IMAP
143
或POP3
110
,则需要进行不安全连接并查询邮件服务器的功能。您可以使用该命令启动安全连接

在TLS协商过程中,您告诉服务器您能做什么(例如TLSv1和SSLv3),然后服务器选择使用哪一个

如果您有一个自动选项,您应该在用户界面中显示一个“锁定”图标或一些其他指示器,以便用户知道连接是否加密。否则他们就不知道你用的是哪种连接方式


您可能想看看雷鸟是如何做到这一点的。

谢谢您的回答。我是这样做的:TCP连接到服务器,如果它立即发送HELLO回复,我认为它使用的是TLS。若服务器并没有在超时时回复,那个么它使用的是SSL。这个解决方案没有问题吗?我不喜欢这样,因为当我使用auto选项时,若服务器使用SSL,我必须在超时期间等待。我很好奇有没有openssl API,我搜索了邮件列表,但没有找到。