设置TLS/LDAP或TLS/HTTP连接时,线路上会发生什么?

goo*_*ate 15 ssl https ldap certificate

我正在重写我的问题,希望我能得到更好的回应.我在这里询问了关于serverfault的类似问题,并认为正确有效的TLS服务器是需要"STARTTLS"命令的服务器.

是否可以在不需要额外端口的情况下将STARTTLS发布到正确配置的LDAP或HTTP TLS服务器?我知道从SMTP的角度来看这是事实,但不确定我可以将这些经验应用到其他协议的范围.

我花时间阅读(但没有完全掌握)

问: 在建立TLS over LDAP或HTTP会话之前,线路上发生了什么?由于这是基于我可以简单地远程登录到该端口,并发出一些指令TCP来验证它的工作(最高点)?

Bru*_*uno 23

SSL和TLS在使用方式上的差异非常小.但是,SSL/TLS的预先建立与使用诸如的命令之间存在根本区别STARTTLS.有时,"TLS"与"SSL"形成对比,表示"使用STARTTLS模式",但这是不正确的.

前期TLS/SSL

在这种情况下,客户端在其他任何事情之前启动TLS/SSL连接,因此首先发生SSL/TLS握手.一旦安全套接字启动,使用它的应用程序就可以开始发送TLS上方协议的各种命令(例如HTTP,此模式下的LDAP,SMTP).

在此模式下,SSL/TLS版本必须在与其普通对应端口不同的端口上运行,例如:端口443上的HTTPS,端口636上的LDAPS,端口993上的IMAPS,而不是分别为80,389,143.

实现这些应用程序协议的层几乎不需要知道它们是在TLS/SSL之上运行的.有时,它们只是通过sslwrap等工具进行隧道传输.

STARTTLS(或同等学历)后的TLS

TLS规范允许在任何时间进行握手,包括在通过相同TCP连接在普通TCP中交换一些数据之后.

某些协议(包括LDAP)包含一个命令,用于告知应用程序协议将进行升级.本质上,LDAP通信的第一部分以纯文本形式发生,然后STARTTLS发送消息(仍然是纯文本),这表示当前的TCP连接将被重用,但下一个命令将被包装在TLS/SSL层中.在此阶段,发生TLS/SSL握手,并且通信"升级"为TLS/SSL.只有在此之后,通过TLS/SSL保护通信,并且客户端和服务器都知道他们必须从TLS层包装/解包他们的命令(通常在TCP层和应用层之间添加TLS库).

STARTTLS在每个协议中如何实现的细节因协议而异(因为这必须与在某种程度上使用它的协议兼容).

甚至HTTP也有使用这种机制的变体,尽管它几乎从不支持:RFC 2817在HTTP/1.1中升级到TLS.这与HTTPS工作方式(RFC 2818)完全不同,后者首先启动TLS/SSL.

STARTTLS方法的优点是您可以在同一端口上运行安全和普通变体,缺点是其后果,特别是潜在的降级攻击或配置中可能出现的错误.

(编辑:我删除了一个错误的句子,正如@GregS指出的那样,谢谢.)

(编辑:我在ServerFault的这个答案中也更多地介绍了SSL与TLS .)

  • 关闭TLS连接后,TLS不要求对等方关闭TCP连接.我正在阅读RFC的第7.2.1节. (3认同)