OpenSSL TLS / SSL版本之间的区别

时间:2017-05-22 18:48:42

标签: security ssl smtp

我目前正在将OpenSSL的TLS / SSL标准实施到我的邮件服务中,允许我的用户选择他们想要的TLS / SSL版本。以下是版本列表:

["TLSv1","TLSv1_server","TLSv1_client","SSLv3","SSLv3_server","SSLv3_client","SSLv23","SSLv23_server","SSLv23_client","TLS","TLSv1_1_server","TLSv1_1_client","TLSv1_1","TLSv1_2","TLSv1_2_server","TLSv1_2_client"]

我做了一些关于选项差异的谷歌搜索,我知道有些版本已被弃用,或者由于安全问题而不应该使用,例如TLSv1。我不理解clientserver之间的区别,但是根据我自己的测试,server选项在尝试使用它发送邮件时会返回错误。

所以我的问题是 - 那个清单,我该删除什么?

1 个答案:

答案 0 :(得分:1)

您展示的不是SSL / TLS版本,而是各种类型的SSL上下文,其中还包括可用的SSL / TLS版本。这意味着*_server"版本"是所有SSL上下文,应该在通常还需要证书的服务器端使用。 *_client变体用于TLS握手的客户端,即发起TLS握手的变体。

在邮件客户端中,您不希望使用任何特定于服务器的SSL上下文,因为邮件客户端会希望对等方以TLS握手开始,而不是。

有关详细信息,请参阅SSL_CTX_new的手册页,其中详细说明了所有这些不同背景的含义。

  

...允许我的用户选择他们想要的TLS / SSL版本。

虽然您的具体实施是错误的,但让用户选择协议版本的想法也是错误的。相反,您应该只使用通用上下文而不受限制(除了禁用不安全的版本),以便它在TLS交换期间自动选择最佳协议版本。只有在对等TLS堆栈被破坏的情况下才能选择特定协议版本,就像堆栈一样,只是拒绝TLS 1.2握手而不是回复TLS 1.0,以防他们不支持TLS 1.2。