zoukankan      html  css  js  c++  java
  • SSL连接

    SSL 的英文全称是 “Secure Sockets Layer” ,中文名为 “ 安全套接层协议层 ” ,它是网景( Netscape )公司提出的基于 WEB 应用的安全协议。 SSL 协议指定了一种在应用程序协议(如 HTTP 、 Telenet 、 NMTP 和 FTP 等)和 TCP/IP 协议之间提供数据安全性分层的机制,它为 TCP/IP 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。

    SSL是在Web服务器和Web客户机之间建立经过身份验证和加密会话的Web协议。SSI以首先建立TCP/IP连接的握手例行程序开始。接着, 通过验证服务器的公钥为客户机验证服务器。一旦通过验证,服务器即会选择客户机和服务器都支持的并在具体的国家/地区所实施的限制内的最强密码算法。下一 步将生成用来对上述客户机和服务器之间的所有数据流进行加密的共享密钥。最终,一个加密的SSL,连接便建立了。 如上所述,在客户机和服务器之间发送的所有信息都经过加密,包括所有的HTTP请求和响应以及客户机请求的URL。该级别的加密可确保信用卡号、访问授权 信息(用户名)以及服务器返回的敏感数据等敏感信息的保护。 因为加密需要大量的计算,所以SSL.会话通常仅用于敏感信息的传输。

    典型的会话按以下方式进行:

    用户决定在线购买商品并单击了被称作“通过我们的安全服务器在线购买”的超链接。

    该超链接建立SSI连接。SSI连接可在“浏览器地址”字段中以“https”(而不是“http”)开头的URL表示。

    一旦交易完成,用户单击另一个超链接即可返回正常的HTTP模式,上述加密的SSL。会话也随之终止。

    SSL历史和版本

    SSL最初由Netscape开发,然后交给IETF(因特网工程任务组)进行标准化SSL,有好几种版本和两个相似的协议。Microsoft认 为原始的SSL协议缺少某些安全功能,因此它创建了PCT(专用通信技术)。后来,Netscape和其他公司创建了包含Microsoft新增功能的 SSI。3.00目前,SSL3.0是最常用的协议,虽然Microsoft仍然支持PCT,,一个不如SSL,流行的相关协议是s -HTTP(安全HTTP),在本书的其他地方有关于它的介绍。

    IETF曾力图将SSI标准化,但不愿意使用RSA Security的专利加密技术,所以它开始致力于使用Diffie—Hellman公钥密码技术的TLS(传输层安全)。TLS基本上就是 SSL3.0,只不过它仅保证传输层的安全性。更高层的协议可在TLS之上运行,但不能从TLS的安全性获益。在RFC 2246和其他地方有关于TLS的大概介绍。

    目前,美国政府允许在浏览器中使用128位加密,.从而可使银行业务和金融交易获得高度的安全性。一些产品,如Microsoft的SGC(服务器 控制密码技术,属SSL,的一种扩展),可支持这种更高水平的加密。此外,也有其他的交易安全协议存在,比如为商业交易提供较高安全等级的SET(安全电 子交易)。

    Netscape当初开发SSI。的目的是保证因特网上的信用卡交易的安全,但该协议在保证一般性Web连接的安全上变得很流行。当然,SSIL仍 存在某些局限性,其他协议在建立公司连接和外联网上更实用。诸如PPTP和L2TP等隧道协议更适用于为远程用户建立拨号连接或建立站点对站点的连接。 mTF新开发的IPSec协议在建立跨越因特网或内联网的安全隧道时尤其有用,特别是它可以加密和封装整个数据分组一因此可对偷听者隐藏所有信息。其典型 配置可能包括Web客户机(使用SSL访问Web服务器)和Web服务器(使用IPSec访问后端数据库和应用程序服务器)。SSL功能及优点SSL通过 保护传送中的数据不被偷听和窜改而有利于电子商务和其他Web通信。通过SSI浏览器和服务器可以先相互进行身份验证,然后加密在会话期间传输的数据。

    SSL (和PCT)提供以下服务:

    机密性

    创建了客户机和服务器用于加密所交换的数据的会话密钥。

    完整性

    为确保消息的真实性以及在传送过程中未被修改,可能要对它们进行单独签名(使用散列例行程序)。

    散列算法可创建随传送的数据发送并由接收者验证的消息摘要。签名还可以防止发送者否认该消息(否认曾发送过它)。SSL和证书SSL依赖于数字证 书。证书将公钥和公钥所属的个人、公司或服务器组合起来。认证机构(CA)颁发证书,用它们自己的私钥对证书签名,因此可对证书进行验证。有关详细信息, 请参考“证书和认证系统”、“数字签名”和“公共密钥密码技术”。

    SSL要求Web服务器具有证书。当用户连接到Web服务器时,服务器向用户发送它的证书。用户可验证该证书是否真实(这实际上是在后台自动处理 的),一旦得到证实,证书中的公钥即被用于加密,只有服务器使用其私钥才能解密的消息。 请注意,证书是“绑定”到Web站点的。换言之,证书言明它只对特定的II)地址(或地址范围)有效。使用证书的初衷是客户机必须知道它们被连接到真实的 Web站点,而不是该站点的假冒者。证书将公钥与指名的实体绑定在一起。可将这同一证书绑定到特定的Web站点,这样,如果有人盗取该证书并企图建立新的 Web站点时,该站点必须要有已分配给真实站点的II)地址,所以只要黑客试图这样做,就会发生错误。

    Microsoft Windows 2000支持SSL公钥证书身份验证。通过将证书映射到现有的帐户,证书可以方便地存储在Microsoft的Active Directory中。用户通过自己的证书和公钥得到验证后,服务器还需要确定客户机对系统的访问权限。该权限可从Active Directory获得,但也可作为一个确定资源授权的映射定义在客户机证书中。

    ssl连接加密支持

    当客户机和服务器首次连接时,它们会协商要使用的加密技术类型和等级。因为在某些国家,地区加密强度受到限制,所以服务器将选择客户机和服务器都支 持的最高级别的加密技术。SSL支持DES(数据加密标准)、TIjple—DES、DSA(数字签名算法)、RSA Security RC2和RC4、MD5(5号消息摘要)、、SHA-1(安全散列算法-1)以及SKIPJACK。这些会在本书的“密码技术”下作进一步的讨论。 SSL3.0握手和连接例行程序 在SSI。协议集中有两个子协议,即握手协议(SSI。握手协议或称SSI_J-IP)和记录协议(SSI。记录协议或称SSI。RP)。SSI。RP定 义数据交换的消息格式,并执行将数据打包和进行MAC (消息验证码)。SSI。I-IP定义在客户机和服务器之间的消息动态交换。在握手期间,服务器向客户机证实身份、选择加密算法、客户机向服务器证实身份 (选项)、生成公用会话密钥以及建立加密的SSL连接。 握手从客户机与服务器连接时开始。

    服务器的证书和公钥用于初始身份验证。经过验证后,将创建客户机和服务器用以加密随后所有数据的一次性对称会话密钥。使用对称算法的原因是,它们的加密解密速度比公钥/私钥加快的多。上述步骤假定仅客户挑要求对服务器进行身份验证。如果服务器也要求对客户机进行身份验证。

    则客户机必须具有证书并在步骤5中将其发送到服务器。

    1.客户机:“服务器,你好;:我要使用SSL。这是我的SSL版本号,一些随机生成的数据,我的加密设置和其他一些有用信息。”

    2.服务器:“客户机,你好。这是我的证书、SSL版本号、一些随机生成的数据、我的加密设置和其他一些有用信息。顺便问一下,你有证书吗?”

    3.客户机通过查验服务器的证书对它进行身份验证。查验证书的步骤在“证书和证书系统”主题下作了概述。请参阅其中的子标题“查验证书”。

    4.客户机和服务器准备建立会话密钥。客户端生成所谓的“预主密钥(premaster secret)”,然后用服务器的公钥对其加密并将它发送到服务器。

    5.服务器使用自己的私钥将从客户机收到的预主密钥(premaster secret)解密。现在,客户机和服务器按照相同步骤从预主密钥(premaster secret)创建主密钥。

    6.客户机和服务器相互发送一个“完成”消息以表明协商过程的完成。为创建该消息,主密钥与此前发送的消息组合起来进行散列化处理。如果双方都能证实从对方接收的完成消息,则建立SSL连接,并使用从主密钥导出来的密钥来安全地传输所有随后的数据。

    https://blog.csdn.net/wang_gongzi/article/details/82853060

    SSL协议,用于Web浏览器与服务器之间的身份认证和加密数据传输.它位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

    SSL协议可分为两层:

    SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
    SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

  • 相关阅读:
    Vue $nextTick的一个使用场景
    Vue 使用v-for对Object进行遍历
    JavaScript 回调函数的简单示例
    VSCode 自定义Vue snippets, 快速生成Vue模板
    git将一个分支完全覆盖另外一个分支如:dev分支代码完全覆盖某一个开发分支
    解决bootstrap时间输入框总被浏览器记住的记录遮挡住的问题
    Fiddler 屏蔽JS、抓WebSocket协议、查看接口响应时间、模拟并发请求
    细说MySQL的时间戳(Timestamp)类型
    网站建设之域名注册和域名备案
    日常项目测试用例检查点(来自一线测试人员的吐血总结)
  • 原文地址:https://www.cnblogs.com/wfish/p/13062296.html
Copyright © 2011-2022 走看看