`

TLS 的使用

    博客分类:
  • XMPP
 
阅读更多

1.使用规则

    1.一个遵守本协议的初始化实体必须声明的version 是1.0

    2.如果TLS握手发生在两个服务器之间,除非服务器声称的DNS主机名已经被解析,通信不能继续进行。

    3.当一个遵守本协议的接收实体接收了一个初始化流(它的头信息中包含一个'version'属性并且值设为“1.0”),在发送应答流的的头信息(其中包含版本标记)之后,它必须发送<starttls/>元素(名字空间为 'urn:ietf:params:xml:ns:xmpp-tls')以及其他它支持的流特性。

    4.如果初始化实体选择使用TLS,TLS握手必须在SASL握手之前完成(保证发送的SASL认证消息的安全)。

    5.在握手期间,不能使用空格符作为元素的分隔符。

    6.证书必须检查初始化实体(比如一个用户)提供的主机名;而不是通过DNS系统解析出来的主机名

    7. 如果 TLS 握手成功了,接收实体必须 丢弃TLS 生效之前从初始化实体得到的任何不可靠的信息.

        如果 TLS 握手成功了,初始化实体必须 丢弃TLS 生效之前从接收实体得到的任何不可靠的信息.

        如果 TLS 握手成功了,接收实体不能在流重新开始的时候通过提供其他的流特性来向初始化实体提供

        STARTTLS 扩展.

        如果 TLS 握手成功了,初始化实体必须继续进行SASL握手。

        如果 TLS 握手失败了,接收实体必须终止XML流和相应的TCP连接。

 

TLS具体示例:

客户端--服务器

客户端初始化流给服务端

<stream:stream
    xmlns='jabber:client'
    xmlns:stream='http://etherx.jabber.org/streams'
    to='example.com'
    version='1.0'>

服务端应答

<stream:stream
    xmlns='jabber:client'
    xmlns:stream='http://etherx.jabber.org/streams'
    id='c2s_123'
    from='example.com'
    version='1.0'>

服务端 发送starttls 的范围

  <stream:features>
    <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'>
      <required/>
    </starttls>
    <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
      <mechanism>DIGEST-MD5</mechanism>
      <mechanism>PLAIN</mechanism>
    </mechanisms>
  </stream:features>

客户端发送starttls命令

 <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

此处有两种可能

1.服务器返回可以继续进行

 <proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>

2.服务器返回牵手失败,关闭流和TCP链接

 <failure xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
</stream:stream>

 

继续

客户端和服务端尝试通过已有的TCP链接完成TLS握手

此处有两种可能

1.握手成功客户端发送一个新的初始化流(放弃之前的不安全信息)

<stream:stream
    xmlns='jabber:client'
    xmlns:stream='http://etherx.jabber.org/streams'
    to='example.com'
    version='1.0'>

2.握手失败 服务端关闭流和TCP连接

 

继续

服务端应答并带有剩余的 SASL特性(TLS已经实现)

<stream:stream
    xmlns='jabber:client'
    xmlns:stream='http://etherx.jabber.org/streams'
    from='example.com'
    id='c2s_234'
    version='1.0'>
<stream:features>
  <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
    <mechanism>DIGEST-MD5</mechanism>
    <mechanism>PLAIN</mechanism>
    <mechanism>EXTERNAL</mechanism>
  </mechanisms>
</stream:features>

 

TLS实例

服务器--服务器

与客户端--服务器相似

分享到:
评论

相关推荐

    关于SSL和TLS的区别

    2. 安全机制:SSL 和 TLS 都使用加密技术来保护数据,但 TLSよりも安全。TLS 使用更强的加密算法和更好的密钥交换机制。 3. 认证机制:SSL 和 TLS 都支持服务器认证,但 TLS 也支持客户认证。TLS 的认证机制更加...

    Java实现SSL TLS

    这个文档旨在为使用 Java 实现 SSL/TLS 提供一个简明易懂的指南。对于没有SSL经验的人来说,这个过程可能会显得有些复杂,因为很多网站通常只关注特定的实施方面。 **SSL/TLS 基础** SSL/TLS 的核心功能是建立两个...

    mqtt-tls_mqtttls_mqtt_mqtt客户端_TLS_源码.rar

    - 证书验证:TLS使用数字证书来验证服务器的身份,防止假冒服务器。 - 客户端认证:TLS也支持客户端证书,实现双向身份验证,提高系统安全性。 - 隐私保护:TLS的加密功能可以隐藏MQTT消息内容,防止未经授权的第...

    mqtt-tls_mqtttls_mqtt_mqtt客户端_TLS

    2. **证书与身份验证**:为了确保与正确且可信的服务器通信,TLS使用X.509数字证书来验证服务器的身份。客户端需要检查服务器证书是否由受信任的证书颁发机构(CA)签发,以及证书中的域名是否与预期的服务器地址匹配...

    Openldap配置TLS加密传输

    #### 一、为何使用TLS? OpenLDAP 默认使用简单认证机制,这意味着所有针对 slapd 的访问都将使用纯文本密码通过未加密的通道进行。这种认证方式虽然简单,但在网络环境中存在较大的安全隐患。为了解决这一问题,...

    RFC5246(TLS协议)

    TLS使用HMAC和伪随机函数来保证消息的完整性。 TLS记录层是协议的最低层,负责将应用层数据分段、压缩(可选)、计算MAC、加密以及传输。TLS记录层能够处理不同类型的负载,包括各种数据类型的记录负载,并能够支持...

    cpp-Fizz是TLS13标准的C14实现

    Fizz库的目标是为开发者提供一个高性能、易于使用且安全的工具,用于构建支持TLS1.3协议的网络应用程序。 TLS1.3的主要改进包括: 1. **更快的握手**:TLS1.3引入了0-RTT(零往返时间)和1-RTT握手模式,显著降低...

    UM1006-RT-Thread-MbedTLS 用户手册1

    **5.10 mbedtls使用范式** 给出了使用MbedTLS库的一般性建议和最佳实践,以提高代码的可靠性和效率。 **5.11 添加新证书** - **根证书样式**:说明了根证书的格式和结构要求。 - **获取根证书**:指导用户如何从...

    mbedtls_Kremlin_TLS移植_mbedtls_mbedtls移植_mbedtls库_

    5. **数据传输**:使用`mbedtls_ssl_read`和`mbedtls_ssl_write`发送和接收加密数据。 6. **断开**:完成通信后,调用`mbedtls_ssl_close_notify`发送关闭通知,并清理资源。 7. **错误处理**:在上述过程中,需要对...

    tls.rar_TLS_Thread Local Storage_thread local

    描述中的“Simplify the Use of Thread Local Storage”表明这个压缩包可能包含了一个简化 TLS 使用的示例或库。这可能是通过提供易于使用的接口,或者通过解决TLS的一些常见问题,如生命周期管理、跨线程通信等。 ...

    gnu TLS documentation

    - **加密库的使用**:除了核心的 TLS 功能外,GNU TLS 还提供了一个强大的加密库,包含了丰富的加密算法和工具,可用于加密数据、生成密钥等操作。 #### 十、内置程序 - **certtool**:用于处理 X.509 证书的操作...

    Implementing SSL TLS Using Cryptography and PKI

    SSL/TLS使用了加密套件(Cipher Suite)的概念,这是一组特定的加密算法组合,包括密钥交换算法、加密算法、消息认证算法以及伪随机函数等。不同的加密套件提供了不同级别的安全性,但是也影响了性能。 一个典型的...

    802.1x EAP-TLS认证证书

    6. **安全优势**:由于EAP-TLS使用了公钥基础设施(PKI),它提供了比其他EAP类型更强的身份验证和数据加密,因此常用于企业环境和高安全性的网络。 7. **部署挑战**:虽然EAP-TLS提供了高级别的安全,但部署和管理...

    mbedtls开源sdk

    其使用 C 编程语言以最小的编码占用空间实现了 SSL/TLS 功能及各种加密算法,易于理解、使用、集成和扩展,方便开发人员轻松地在嵌入式产品中使用 SSL/TLS 功能。 mbedTLS 软件包提供了如下的能力: 完整的 SSL ...

    xp添加对TLS1.1和TLS1.2的支持

    标题中的“xp添加对TLS1.1和TLS1.2的支持”指的是在Windows XP操作系统上增加对Transport Layer Security (TLS) 1.1和1.2版本的支持。TLS是一种网络协议,用于在互联网上提供安全的数据传输,确保数据的私密性和完整...

    SVD-TLS_SVD-TLS算法_SVD-TLSmatlab_svd-tls_ARMA_TLS-SVD_

    在实际操作中,使用MATLAB这样的数值计算环境可以方便地实现SVD-TLS算法,并对ARMA模型进行估计。 总结来说,SVD-TLS算法是一种强大的工具,特别是在处理噪声数据和估计模型参数时。它结合了SVD的线性代数优势和TLS...

    stm32_MbedTLS-master.rar

    总之,"stm32_MbedTLS-master"项目提供了在STM32微控制器上使用MbedTLS加密库的实际案例,这对于学习和实践嵌入式系统的安全通信至关重要。通过理解和实践这些例程,开发者可以更好地理解如何在资源受限的环境中实现...

    XP支持TLS1.1和TLS1.2.rar

    标题中的“XP支持TLS1.1和TLS1.2.rar”指的是Windows XP操作系统的一个更新,目的是使其能够支持传输层安全(TLS...对于仍在使用XP系统的用户来说,这是一个至关重要的更新,有助于保护他们的数据免受潜在的网络威胁。

    使用Mbedtls包中的SSL,和服务器进行网络加密通信.rar

    通过以上步骤,我们可以使用Mbedtls在STM32上建立安全的SSL/TLS连接,实现与服务器的加密通信。不过,实际应用中还需要考虑错误处理、调试和性能优化等问题。在具体项目中,应根据实际需求和硬件资源选择合适的SSL/...

Global site tag (gtag.js) - Google Analytics