当建立 TLS / LDAP 或 TLS / HTTP 连接时,线路上会发生什么?

2024-05-05

我正在重新表述我的问题,希望能得到更好的答复。我问了类似的问题这里服务器故障 https://serverfault.com/questions/178561/what-are-the-exact-protocol-level-differences-between-ssl-and-tls, and think正确且有效的 TLS 服务器是需要“STARTTLS”命令的服务器。

是否可以将 STARTTLS 发送到正确配置的 LDAP 或 HTTP TLS 服务器而不需要额外的端口?我知道从 SMTP 的角度来看这是正确的,但不确定我可以在多大程度上将这些经验应用到其他协议中。

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

  • The TLS Spec https://www.rfc-editor.org/rfc/rfc2246
  • 之间的差异TLS 和 SSL http://novosial.org/openssl/tls-name/
  • The SSL Spec http://www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt

Q:在设置 LDAP 上的 TLS 或 HTTP 会话之前,线路上会发生什么?由于这是基于 TCP 的,我可以简单地 telnet 到该端口并发出一些命令来验证它是否正常工作(到目前为止)?


SSL 和 TLS 在使用方式上几乎没有什么区别。然而,SSL/TLS 的预先建立和使用诸如以下命令之间存在根本区别:STARTTLS。有时,“TLS”与“SSL”相对,表示“使用 STARTTLS 模式”,但这是不正确的。

预先 TLS/SSL

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

在此模式下,SSL/TLS 版本必须在与其普通版本不同的端口上运行,例如:HTTPS 在端口 443 上运行、LDAPS 在端口 636 上运行、IMAPS 在端口 993 上运行,而不是分别在端口 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://www.rfc-editor.org/rfc/rfc2817。这与 HTTPS 的工作方式完全不同(RFC 2818 https://www.rfc-editor.org/rfc/rfc2818),它首先启动 TLS/SSL。

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

(EDIT:正如 @GregS 指出的那样,我删除了一个不正确的句子,谢谢。)

(EDIT:我还在中对 SSL 与 TLS 进行了更多介绍ServerFault 上的这个答案 https://serverfault.com/questions/178561/what-are-the-exact-protocol-level-differences-between-ssl-and-tls/179139#179139.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当建立 TLS / LDAP 或 TLS / HTTP 连接时,线路上会发生什么? 的相关文章

  • 如何为我的 Android Market APK 创建证书?

    我想将我的第一个 APK 应用程序上传到 Android Market 但我收到了此错误 顺便说一下 在 stackoverflow 中搜索时并没有引导我找到正确的链接 市场不接受使用调试证书签名的 APK 创建有效期至少 50 年的新证书
  • 使用 Java https 上传到 Imgur v3 错误

    我目前正在尝试使用他们当前的 API v3 上传到 imgur 但是我不断收到错误 错误 javax net ssl SSLException 证书中的主机名不匹配 api imgur com imgur com OR imgur com
  • 使用.pem文件在java中发送https请求

    我有包含证书 私钥和信任链的 pem 文件 以及我使用它生成的 p12 文件openssl pkcs12 导出 openssl pkcs12 export out file p12 in file pem inkey file pem pa
  • 如何使用 Postgres 数据库 URL 字符串传递证书路径以进行 SSL 连接

    我正在尝试通过 SSL 为我的 Spring 启动应用程序保护与 AWS RDS 实例的连接 我看了几个博客和官方文档 https jdbc postgresql org documentation head ssl client html
  • ASP.NET - 将所有 https 请求重写为 http

    我的问题正是所提出的问题here https stackoverflow com questions 16276860 iis 7 adding ssl to one site all other sites responds to htt
  • 忽略控制台应用程序中的 Web 浏览器 SSL 安全警报

    我正在创建一个能够远程捕获网站屏幕截图的控制台应用程序 除了我无法避免证书错误之外 一切都正常 每次我收到无法通过的弹出消息 我尝试使用 ServicePointManager ServerCertificateValidationCall
  • GetClientCertificate 使用什么主题?

    我正在尝试发送请求 ActiveXObject WinHttp WinHttpRequest 5 1 但是 这需要客户端证书才能执行此操作 我们已提供该证书 在 PHP cURL 中进行测试后 我可以这样做 curl setopt SOAP
  • 如何显示证书的主题备用名称?

    我发现的最接近的答案是使用 grep gt openssl x509 text noout in cert pem grep DNS 有更好的方法吗 我只喜欢命令行 Thanks 较新版本的 openssl 有一个 ext 选项 允许您仅打
  • Invoke-WebRequest SSL 失败?

    当我尝试使用时Invoke WebRequest我收到一些奇怪的错误 Invoke WebRequest Uri https idp safenames com Invoke WebRequest The underlying connec
  • 使用 CustomBinding 的 WCF 服务配置 HTTPS

    我需要 WCF 服务上的自定义绑定 以允许我将原始内容传递到 WCFRest 服务 效果很好 但我无法让它接受传输级安全性 我想要 https 和 basicauthentication 就像我在其他地方使用的那样 端点看起来像这样
  • 使用 JNDI 添加 LDAP 条目

    我正在尝试使用 JNDI 将条目添加到 LDAP 服务器 我可以成功地从 LDAP 服务器读取条目 但是当我尝试添加新条目时出现错误 我检查了各种方法但都失败了 private String getUserAttribs String se
  • 在 python 2.7 中更新 openssl

    想知道是否有人可以解释 openssl 在 python2 7 中如何工作 我不确定 python 是否有自己的 openssl 或者从本地机器 env 中获取它 让我解释 如果我在Python中这样做 gt gt gt import ss
  • AF网络3问题

    In AFNetworking3 表示我使用的 SSL 证书无效验证证书链 false 但现在看来该字段已被删除 我无法向我的服务器发出请求 这是请求类 import UIKit import AFNetworking class Clie
  • Bower 安装 self_signed_cert_in_chain

    我正在 Windows 中使用 git bash 构建一个角度应用程序 到目前为止 我已经能够使用 yo 搭建脚手架 没有问题 但是当我尝试发出以下命令时 有人可以指出我来解决这个问题吗 Bower 安装 Angular Bootstrap
  • 带有客户端证书的android webview

    我尝试了几天使用嵌入在应用程序中的客户端证书的Web视图 但在我看来 android sdk没有提供任何方法来做到这一点 是否有回调来拦截服务器发送的质询 有没有办法将 webview 与客户端证书一起使用并发出 https 请求 因为我也
  • 当支持 SPDY 的浏览器收到 HTTP2 (H2) 响应时会发生什么?

    我的直觉是 支持 SPDY 的浏览器会将其视为 SPDY 响应 然而 我能找到的最多的是 H2 响应将优雅地降级到 HTTP1 1 的保证 我正在考虑以面向 H2 的方式提供资产 多个请求 无域分片等 但我确实需要支持一些非 H2 浏览器
  • 当SESSION_COOKIE_SECURE = True时如何在HTTP中获取一些用户身份信息

    以下是我正在开发的网站的简短描述 公共页面可以通过 HTTP 或 HTTPS 访问 其他一些页面 认证页面 账户详情页面等 需要通过HTTPS访问 Apache2 负责进行相关的 HTTP 到 HTTPS 链接重定向 我使用标准 Djang
  • 通过 HTTPS 的隧道

    在我的工作场所 流量拦截器 防火墙变得越来越糟糕 我无法通过端口 22 连接到我的家用计算机 并且缺乏 ssh 访问权限让我感到难过 我以前可以通过将 SSH 移动到端口 5050 来使用它 但我认为最近的一些过滤器现在将此流量视为 IM
  • Java 使用服务器证书对 jar 进行签名

    是否可以使用服务器证书来签署 java web start 应用程序 我想知道的是它是否有效 我的服务器有一个受信任的证书 并且我想重复使用同一证书来签署应用程序 现在 我有这样的警告 此 jar 包含其签名者证书的 ExtendedKey
  • SMTP:无法连接套接字:无法找到套接字传输“ssl”

    我一直在尝试在 WAMP 上使用 Pear 发送电子邮件通过 GMail 花了几个小时将其全部设置并找出我遇到的所有错误后 我以为我已经很接近了 直到我开始收到此错误 Failed to connect to ssl smtp gmail

随机推荐