精华内容
下载资源
问答
  • Xray-TLS + Web构建/管理脚本 目录 脚本特性 支持(Xray-TCP + XTLS)+(Xray-WebSocket + TLS)+ Web 集成多版本bbr /锐速安装选项 支持多种系统(Ubuntu CentOS Debian deeped fedora ...) 支持多种指令集(x86 ...
  • http://en.wikipedia.org/wiki/Web_application A web application or web app is any software that runs in a web browser. Web applications are popular due to the ubiquity of web browsers, and the c

    http://en.wikipedia.org/wiki/Web_application

    A web application or web app is any software that runs in a web browser. Web applications are popular due to the ubiquity of web browsers, and the convenience of using a web browser as a client, sometimes called a thin client. The ability to update and maintain web applications without distributing and installing software on potentially thousands of client computers is a key reason for their popularity, as is the inherent support for cross-platform compatibility. Common web applications include webmail, online retail sales, online auctions, wikis and many other functions.

    Web applications can be considered as a specific variant of client-server software where the client software is downloaded to the client machine when visiting the relevant web page, using standard procedures such asHTTP. Client web software updates may happen each time the web page is visited. During the session, the web browser interprets and displays the pages, and acts as theuniversal client for any web application.

    Common web applications include webmail, online retail sales, online auctions, wikis and many other functions.

    网页邮件,在线零售,在线拍卖,维基等

    Q1: web browser is like the universal client for any web application. So who is the server of web application? when authentication, what has been authenticated? How is TLS used?

    A1:web application的服务器是web server, 认证问题在Q3中解答,TLS是为了保护http的通信。

    http://en.wikipedia.org/wiki/Web_server

    A web server is an information technology that processes requests via HTTP, the basic network protocol used to distribute information on the World Wide Web.

    The primary function of a web server is to store, process and deliver web pages to clients. The communication between client and server takes place using the Hypertext Transfer Protocol (HTTP). Pages delivered are most frequently HTML documents, which may include images, style sheets and scripts in addition to text content.

    A user agent, commonly a web browser or web crawler(网络爬虫), initiates communication by making a request for a specific resource using HTTP and the server responds with the content of that resource or anerror message if unable to do so. The resource is typically a real file on the server'ssecondary storage, but this is not necessarily the case and depends on how the web server isimplemented.

     

    http://en.wikipedia.org/wiki/HTTP_Secure

    HTTPS ("HTTP over TLS",[1][2] "HTTP over SSL",[3] or "HTTP Secure"[4][5]) is a communications protocol for secure communication over a computer network, with especially wide deployment on the Internet. Technically, it is not a protocol in and of itself; rather, it is the result of simplylayering the Hypertext Transfer Protocol (HTTP) on top of theSSL or TLS protocol, thus adding the security capabilities of SSL/TLS to standard HTTP communications. The main motivation for HTTPS is to provideauthentication of the visited website and prevent wiretapping and man-in-the-middle attacks.

    Web browsers know how to trust HTTPS websites based on certificate authorities that come pre-installed in their software.

    Q2:why say "most web applications relies on the classical Diffie-Hellman and RSA-based ciphersuites of TLS" (TLS-PSK, PKC2014, p1)

    A2: 因为web application都运行在web browser中,而web browser通过http向web server请求资源,TLS用于保护http数据,而一般的web应用都用标准的tls,因此有上述结论。

    http://en.wikipedia.org/wiki/Thin_client

    A thin client (sometimes also called a lean,zero or slim client) is a computer or a computer program that depends heavily on another computer (its server) to fulfill its computational roles. This is different from the traditionalfat client, which is a computer designed to take on these roles by itself. The specific roles assumed by the server may vary, from providingdata persistence (for example, for diskless nodes) to actual information processing on the client's behalf.Thin clients occur as components of a broader computer infrastructure, where many clients share their computations with the same server. As such, thin client infrastructures can be viewed as providing some computing service via several user interfaces. This is desirable in contexts where individual fat clients have much more functionality or power than the infrastructure requires.Thin-client computing is also a way of easily maintaining computational services at a reduced total cost of ownership.[1]The most common type of modern thin client is a low-endcomputer terminal which only provides a graphical user interface - or more recently, in some cases, a web browser - to the end user.

     

    Q3:TLS如何认证服务器和/或客户的?证书如何实现认证的?

    rfc 5246 7.4.2 Server Certificate

    When this message will be sent:

          The server MUST send a Certificate message whenever the agreed-upon key exchange method uses certificates for authentication (this includes all key exchange methods defined in this document except DH_anon).  This message will always immediately follow the ServerHello message.

       Meaning of this message:

          This message conveys the server's certificate chain to the client. The certificate MUST be appropriate for the negotiated ciphersuite's key exchange algorithm and any negotiated extensions.

         certificate_list
          This is a sequence (chain) of certificates.  The sender's certificate MUST come first in the list.  Each following certificate MUST directly certify the one preceding it.  Because certificate validation requires that root keys be distributed independently, the self-signed certificate that specifies the root certificate authority MAY be omitted from the chain, under the assumption that the remote end must already possess it in order to validate it in any case.

       The same message type and structure will be used for the client's response to a certificate request message.  Note that a client MAY send no certificates if it does not have an appropriate certificate to send in response to the server's authentication request.

    Note: PKCS #7 [PKCS7] is not used as the format for the certificate vector because PKCS #6 [PKCS6] extended certificates are not used. Also, PKCS #7 defines a SET rather than a SEQUENCE, making the task of parsing the list more difficult.

       The following rules apply to the certificates sent by the server:

       -  The certificate type MUST be X.509v3, unless explicitly negotiated otherwise (e.g., [TLSPGP]).

       -  The end entity certificate's public key (and associated restrictions) MUST be compatible with the selected key exchange algorithm.

          Key Exchange Alg.  Certificate Key Type

          RSA                 RSA public key; the certificate MUST allow the key to be used for encryption (the keyEncipherment bit MUST be set if the key usage extension is present).
          RSA_PSK         Note: RSA_PSK is defined in [TLSPSK].                                         

          DHE_RSA        RSA public key; the certificate MUST allow the key to be used for signing (the digitalSignature bit MUST be set if the key usage extension is present) with    

                                  the signature scheme and hash algorithm that will be employed in the server key exchange message.
                            
          ECDHE_RSA    Note: ECDHE_RSA is defined in [TLSECC].                     

          DHE_DSS         DSA public key; the certificate MUST allow the key to be used for signing with the hash algorithm that will be employed
                             
                                   in the server key exchange message.      

          DH_DSS             Diffie-Hellman public key; the keyAgreement bit
          DH_RSA             MUST be set if the key usage extension is present.

          ECDH_ECDSA     ECDH-capable public key; the public key MUST
          ECDH_RSA           use a curve and point format supported by the client, as described in [TLSECC].

          ECDHE_ECDSA        ECDSA-capable public key; the certificate MUST
                             allow the key to be used for signing with the
                             hash algorithm that will be employed in the
                             server key exchange message.  The public key
                             MUST use a curve and point format supported by
                             the client, as described in  [TLSECC].

    so what is X.509 [RFC 5280]

    In cryptography, X.509 is an ITU-T standard for a public key infrastructure (PKI) and Privilege Management Infrastructure (PMI). X.509 specifies, amongst other things, standard formats forpublic key certificates, certificate revocation lists, attribute certificates, and a certification path validation algorithm.

    The structure of an X.509 v3 digital certificate is as follows:

    • Certificate
      • Version
      • Serial Number
      • Algorithm ID
      • Issuer
      • Validity
        • Not Before
        • Not After
      • Subject
      • Subject Public Key Info
        • Public Key Algorithm
        • Subject Public Key
      • Issuer Unique Identifier (optional)
      • Subject Unique Identifier (optional)
      • Extensions (optional)
        • ...
    • Certificate Signature Algorithm
    • Certificate Signature

    http://security.stackexchange.com/questions/81972/what-part-of-tls-specifies-how-to-verify-a-certificate-chain

    Note, though, that while SSL/TLS formally relies on X.509 certificates, the protocol is not irremediably married with X.509. Within the handshake dynamics,the idea is that the server sends its public key to the client within acertificate chain, and then the client somehow uses the server's public key. How the client obtains the server's public key is a bit out of scope; normally, the client does so by decoding and validating the certificate chain sent by the server, but the client is free to "know" the server's public key from any other way that it sees fit. In some dedicated applications (especially embedded systems), the client may contain a hardcoded copy of the server's public key, and just use that, completely disregarding whatever the server sends as "certificate chain".

    Moreover, the "certificate chain", from the point of view of SSL/TLS, is a sequence of opaque blobs, such that the total length does not exceed 16 megabytes. While these blobs are normally encoded X.509 certificates, they may be something else, as long as the client agrees (and a client who ignores the server certificate chain will, by definition, agree to anything). There is even a formally definedRFC for using OpenPGP keys instead of X.509 certificates in SSL/TLS.

    IF the certificate chain follows the usual rules (X.509 certificates, that the client validate), then theX.509 rules apply. The complete X.509 path validation algorithm isa work of the Devil to confuse and corrupt good men's minds. However, as a simple summary, an issued certificate (your "intermediate CA certificate") matches its issuer (in your case, the root) through the two following properties, which must all be fulfilled:

    • The subjectDN field in the issuer (root) must be equal to theissuerDN field in the issued (intermediate CA). Thanks to the multitude of possible encodings and Byzantine Unicode rules for case matching, actual "equality" of names is a potentially complex notion.

    • A certificate is signed; the signature on the issued certificate must be verifiable with regards to the issuer's public key.

     http://en.wikipedia.org/wiki/X.509

    Protocols and standards supporting X.509 certificates

     

    展开全文
  •  通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四部分组成。 3、服务器接受请求并返回HTTP响应  Web服务器解析请求,定位请求资源。服务器将资源...

     

    1      各层的位置

    1.1      OSI七层模型全景图

     

     

    OSI是Open System Interconnect的缩写,意为开放式系统互联。

     

    1.2      五层网络协议

    在七层的基础上,删除了说不清楚的会话层和表示层,合并到了应用层。

     

     

     

    1.3      TCP/IP四层参考模型

    不关心底层,在五层的基础上,去掉了物理层。然后去掉了其他层与TCP/IP无关的部分

     

     

    1.4      常用协议所属层

    如上图所示:

    应用层:用用程序协议

    TCP类:HTTP,FTP,SMTP,TELNET,POP3…

    TCP+UDP类:SOCKS,SLP,DNS,MSN,NFS

           UDP:NTP,SNMP,

    表示层:语法语义。如加解密,翻译,(解)压缩。

    会话层:会话管理。

           TCP类:SSL,TLS,DAP,LDAP

    UDP+UDP类:RPC

    ------------以上在五层协议里统称会话层。

     

    传输层:TCP UDP

    网络层:IP ICMP 以及路由相关协议

    链路层:交换机协议 ARP RARP

     

     

    2      TCP

    2.1      TCP简介

     TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

    2.2      TCP特征

    提供的是面向连接、可靠的字节流服务。

    当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

     

    2.3      优缺点

    优点:安全、传输数据无大小限制、准确可靠,先发先至

    缺点:效率低,不能做离线任务、连接有耗时

    2.4      TCP三次握手过程

    第一次握手:客户端尝试连接服务器,向服务器发送syn包(同步序列编号Synchronize Sequence Numbers), syn=j,客户端进入SYN_SEND状态等待服务器确认

     

    第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个SYN包(syn=k),即SYN+ACK包, 此时服务器进入SYN_RECV状态

     

    第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕, 客户端和服务器进入ESTABLISHED状态,完成三次握手

    2.5      TCP四次挥手过程

    第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

     

    第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

     

    第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

     

    第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1, Server进入CLOSED状态,完成四次挥手。

     

    3      UDP

    3.1      UDP简介

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

     

    3.2      UDP特征

    (1)    UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

    (2)       由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。

    (3)       不可靠传输协议。

    (4)       吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。

    (5)       UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。

    (6)       UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

    3.3      优缺点

    优点:可以传输大文件,速度快,效率高

    缺点:不安全,容易丢包(数据)、先发未必先至

    3.4      适合场景

    当一个消息丢失后,不久就会有一个新消息替代他的场景。

     

    4      Socket

    4.1      Socket解决的问题

    TCP/IP只是个协议,这个协议最终要通过一个抽象接口实现,这个接口,就是Socket。

     

    在设计模式中,Socket接口其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket接口去组织数据,以符合指定的协议。

     

    Socket接口用于创建并唯一标识一个网络通信链路。

     

    Socket接口创建出来的东西就是socket,然后进程可以利用socket进行通信。

     

    所以,一个Sokcet需要包含五元组信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

     

     

     

     

    4.2      通信流程

     

     

     

    4.3      支持的传输协议

    TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。

     

     

    5      HTTP

    5.1      HTTP简介

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

     

    HTTP是一个基于TCP/IP通信协议来传递数据

     

    5.2      HTTP的主要特点

    1、  简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    2、  灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    3、  无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    4、  无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    5、  支持B/S及C/S模式。

     

    5.2.1        无连接、无状态的理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。

     

     

    5.2.2        KeepAlive机制

    HTTP 对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,洋文叫做“Keep-Alive”或“Persistent Connection”)

     

    假设有一个网页,里面包含好多图片,还包含好多【外部的】CSS 文件和 JS 文件。在“短连接”的模式下,浏览器会先发起一个 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)。然后,浏览器开始分析这个网页的源码,知道这个页面包含很多外部资源(图片、CSS、JS)。然后针对【每一个】外部资源,再分别发起一个个 TCP 连接,把这些文件获取到本地(同样的,每抓取一个外部资源后,相应的 TCP 就断开)

    相反,如果是“长连接”的方式,浏览器也会先发起一个 TCP 连接去抓取页面。但是抓取页面之后,该 TCP 连接并不会立即关闭,而是暂时先保持着(所谓的“Keep-Alive”)。然后浏览器分析 HTML 源码之后,发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源。

     

    在 HTTP 1.0 版本,【默认】使用的是“短连接”(那时候是 Web 诞生初期,网页相对简单,“短连接”的问题不大);

    到了1995年底开始制定 HTTP 1.1 草案的时候,网页已经开始变得复杂(网页内的图片、脚本越来越多了)。这时候再用短连接的方式,效率太低下了(因为建立 TCP 连接是有“时间成本”和“CPU 成本”滴)。所以,在 HTTP 1.1 中,【默认】采用的是“Keep-Alive”的方式。

     

    5.2.3        HTTP为啥不选择UDP

    主要原因是要保证可靠传输。

     

    5.3      HTTP的请求方法

    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

     

    GET     请求指定的页面信息,并返回实体主体。

    HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

    POST     向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

    PUT     从客户端向服务器传送的数据取代指定的文档的内容。

    DELETE      请求服务器删除指定的页面。

    CONNECT     HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

    OPTIONS     允许客户端查看服务器的性能。

    TRACE     回显服务器收到的请求,主要用于测试或诊断。

     

    5.4      HTTP请求/响应步骤

    1、客户端连接到Web服务器

      一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

    2、发送HTTP请求

      通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四部分组成。

    3、服务器接受请求并返回HTTP响应

      Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

    4、释放连接[TCP连接]

      若connection 模式为close,则服务器主动关闭[TCP连接]

      客户端被动关闭连接,释放[TCP连接]若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

    5、客户端浏览器解析HTML内容

      客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

     

     

    6      HTTPS、TLS、SSL

    6.1      SSL/TLS是啥

    SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的基础设施——比如“CSS 样式表”和“JS 脚本”)

    为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。发明 SSL 协议,就是为了解决这些问题。

    到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。

    很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。

    SSL是一个通用协议,不止可以支持HTTPS,还能支持其他各种协议:比如:FTP、SMTP、POP、Telnet

    6.2      “HTTPS”是啥意思

    HTTPS 协议,说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合。你可以把 HTTPS 大致理解为——“HTTP over SSL”或“HTTP over TLS”(反正 SSL 和 TLS 差不多)。

    6.3      HTTPS所拥有的特征

    6.3.1        保密性(防泄密)

    HTTPS 需要做到足够好的保密性。

    说到保密性,首先要能够对抗嗅探(行话叫 Sniffer)。所谓的“嗅探”,通俗而言就是监视你的网络传输流量。如果你使用明文的 HTTP 上网,那么监视者通过嗅探,就知道你在访问哪些网站的哪些页面。

    嗅探是最低级的攻击手法。除了嗅探,HTTPS 还需要能对抗其它一些稍微高级的攻击手法——比如“重放攻击”(后面讲协议原理的时候,会再聊)。

    6.3.2        完整性(防篡改)

    除了“保密性”,还有一个同样重要的目标是“确保完整性”。关于“完整性”这个概念,在之前的博文《扫盲文件完整性校验——关于散列值和数字签名》中大致提过。健忘的同学再去温习一下。

    在发明 HTTPS 之前,由于 HTTP 是明文的,不但容易被嗅探,还容易被篡改。

    举个例子:

    比如咱们天朝的网络运营商(ISP)都比较流氓,经常有网友抱怨说访问某网站(本来是没有广告的),竟然会跳出很多中国电信的广告。为啥会这样捏?因为你的网络流量需要经过 ISP 的线路才能到达公网。如果你使用的是明文的 HTTP,ISP 很容易就可以在你访问的页面中植入广告。

    所以,当初设计 HTTPS 的时候,还有一个需求是“确保 HTTP 协议的内容不被篡改”。

    6.3.3        真实性(防假冒)

    在谈到 HTTPS 的需求时,“真实性”经常被忽略。其实“真实性”的重要程度不亚于前面的“保密性”和“完整性”。

    举个例子:

    你因为使用网银,需要访问该网银的 Web 站点。那么,你如何确保你访问的网站确实是你想访问的网站?(这话有点绕口令)

    有些天真的同学会说:通过看网址里面的域名,来确保。为啥说这样的同学是“天真的”?因为 DNS 系统本身是不可靠的(尤其是在设计 SSL 的那个年代,连 DNSSEC 都还没发明)。由于 DNS 的不可靠(存在“域名欺骗”和“域名劫持”),你看到的网址里面的域名【未必】是真实滴!

    (不了解“域名欺骗”和“域名劫持”的同学,可以参见俺之前写的《扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染”》)

    所以,HTTPS 协议必须有某种机制来确保“真实性”的需求(至于如何确保,后面会细聊)。

    6.4      HTTPS建链流程

     

     

    1、  客户端发起一个https的请求,把自身支持的一系列Cipher Suite(密钥算法套件,简称Cipher)发送给服务端 ClientHello

    2、  服务端接收到客户端所有的Cipher后与自身支持的对比,如果不支持则连接断开,反之则会从中选出一种加密算法和HASH算法,以证书的形式返回给客户端。ServerHello Certificate ServerHelloDone

    3、  客户端收到服务端响应的证书后. client_key_exchange+change_cipher_spec+encrypted_handshake_message

    • 第一步、校验证书的是否有效。关于客户端校验证书的是否有效已经做了详细的介绍,这里就不赘述了。
    • 第二步、生成随机密码。如果证书验证通过,或者用户接受了不授信的证书,此时浏览器会生成一串随机密码,然后用证书中的公钥加密。
    • 第三步、用最开始约定好的HASH方式,把握手消息取HASH值,把用 随机数密码加密 “握手消息+握手消息HASH值(签名)”和用公钥加密的随机密码 一起发送给服务端。把握手消息做一个签名,用于验证握手消息在传输过程中没有被篡改过。

    4、服务端拿到客户端传来的密文,用自己的私钥来解密,获取随机密码,再用随机数密码 解密 握手消息与HASH值,并与传过来的HASH值做对比确认是否一致。然后用随机密码加密一段握手消息(握手消息+握手消息的HASH值 )给客户端。(此时服务器端已经获取到了客户端生成的随机密码了) 服务端用随机密码解密并计算握手消息的HASH,如果与客户端发来的HASH一致,此时握手过程结束。
    change_cipher_spec+encrypted_handshake_message


     

    7      WebSocket

    7.1      来龙去脉

    WebSocket出现之前,Web端为了实现即时通讯,所用的技术都是Ajax轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

     

    从特征来看,webSocket摒弃了HTTP的如下特征:无状态、无连接、单向。

    变成了一个双向全双工的长连接。

     

    7.2      技术本质

    Websocket分两部分:

    1、  会话初始协议:采用的是HTTP协议,并添加了一些新的头域。

    2、  会话交互协议:这也是一个新的名为Websocket的应用层协议。

    a)      WS的连接不能通过中间人来转发,它必须是一个直接连接;

    b)     WS连接建立之后,通信双方都可以在任何时刻向另一方发送数据;

    c)      WS连接建立之后,数据的传输使用帧来传递,不再需要Request消息;

    d)     WS的数据帧有序。

     

    7.3      与socket对比

    Websocket是一个新的应用层协议,而socket的一个对传输层协议TCP/UDP等的接口封装。

    所以,WebSokcet和Socket不是一个可以水平对比的东西。

    WebSocket的底层实现,可以采用socket接口。

     

    7.4      加密

    wss 建立在HTTPS 的基础上,在握手的时候使用HTTS 建立连接。

    以上是建链消息加密

    传输内容加密,网上没找到具体的资料,应该也是基于tls的socket加密,而tls的证书交换,前面HTTPS链接的时候,已经完成。

    8      后WebSocket协议

    8.1      STOMP

    STOMP是WebSocket的子协议(更高层),WebSocket定义了两种消息类型,text和binary,但是没有定义消息内容。STOMP为客户端和服务端定义了一种机制,包括两者分别可以发送消息的类型,消息格式和消息内容等。

     

     

     

    9      参考

    OSI七层模型详解

    https://blog.csdn.net/u014082714/article/details/44994719

    聊聊HTTPS和SSL/TLS协议

    http://www.techug.com/post/https-ssl-tls.html

     

     

    转载于:https://www.cnblogs.com/aoyihuashao/p/10563591.html

    展开全文
  • 在本文中,我们向您展示如何在启用了TLS / SSL或https安全连接的Tomcat上部署JAX-WS Web服务。 实际上,答案很简单,只需将其部署为普通的Web服务并在Tomcat服务器上正确配置SSL连接即可。???? 注意 本文只是我在...

    在本文中,我们向您展示如何在启用了TLS / SSL或https安全连接的Tomcat上部署JAX-WS Web服务。 实际上,答案很简单,只需将其部署为普通的Web服务并在Tomcat服务器上正确配置SSL连接即可。🙂

    注意
    本文只是我在SSL连接环境中开发Web服务的最后几篇文章的结合。

    1.配置Tomcat + SSL

    有关详细信息,请参阅本指南– 使Tomcat支持SSL或https连接

    基本上,只需从受信任的证书提供者处购买证书,或使用JDK的keytool命令生成用于本地测试的虚拟证书。 并将以下部分放入您的Tomcat server.xml文件中。

    文件:$ Tomcat \ conf \ server.xml

    //...
     <!-- Define a SSL HTTP/1.1 Connector on port 8443
             This connector uses the JSSE configuration, when using APR, the 
             connector should be using the OpenSSL style configuration
             described in the APR documentation -->
     
     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
                   maxThreads="150" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" 
    	       keystoreFile="c:\your keystore file"
    	       keystorePass="your keystore password" />
      //...

    重新启动Tomcat,现在,您的Tomcat支持SSL连接,例如https:// localhost:8443

    2.部署Web服务

    像普通的Web服务一样部署它,请参阅本指南– 在Tomcat Servlet容器上部署JAX-WS Web服务

    3.测试

    配置完成; 您可以使用普通的Web服务客户端以SSL连接访问已部署的Web服务。

    例如,

    URL url = new URL("https://localhost:8443/HelloWorld/hello?wsdl");
        QName qname = new QName("http://ws.mkyong.com/", "HelloWorldImplService");
        Service service = Service.create(url, qname);
    
        HelloWorld hello = service.getPort(HelloWorld.class);
        System.out.println(hello.getHelloWorldAsString());

    注意
    对于localhost SSL测试环境,客户端将遇到以下异常,请阅读以下问题和解决方案:

    1. java.security.cert.CertificateException:找不到与本地主机匹配的名称
    2. SunCertPathBuilderException:无法找到到请求目标的有效证书路径

    4.完成

    您的Web服务具有SSL保护,相当简单,在Web服务站点上没有任何更改; 只需将Tomcat配置为仅支持SSL连接。

    参考
    1. Wiki – SSL连接
    2. JAX-WS你好世界示例

    翻译自: https://mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat-ssl-connection/

    展开全文
  • OpenSSL编写SSL,TLS程序

    千次阅读 2018-08-18 12:25:18
    一、简介:SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC...

    一、简介:

    SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC2246.SSL/TLS提供的安全机制可以保证应用层数据在互联网络传输不 被监听,伪造和窜改.

    openssl(http://www.openssl.org/)是sslv2,sslv3,tlsv1的一份完整实现,内部包含了大量加密算法程序.其命令行提供了丰富的加密,验证,证书生成等功能,甚至可以用其建立一个完整的CA.与其同时,它也提供了一套完整的库函数,可用开发用SSL/TLS的通信程序. Apache的https两种版本 mod_ssl和apachessl均基于它实现的.openssl继承于ssleay,并做了一定的扩展,当前的版本是0.9.5a.
    openssl 的缺点是文档太少,连一份完整的函数说明都没有,man page也至今没做完整:-(,如果想用它编程序,除了熟悉已有的文档(包括 ssleay,mod_ssl,apachessl的文档)外,可以到它的maillist上找相关的帖子,许多问题可以在以前的文章中找到答案.

    编程:
    程序分为两部分,客户端和服务器端,我们的目的是利用S

    展开全文
  • V2Ray 基于 Nginx 的 vmess+ws+tls 一键安装脚本 感谢 JetBrains 提供的非商业开源软件开发授权 Thanks for non-commercial open source development authorization by JetBrains Telegram 群组 telegram 交流...
  • WS和WSS区别

    万次阅读 2020-08-03 17:47:49
    遇到了一些问题,WS和WSS有什么区别呢。 经过尝试发现,WS不用配置SSL。直接可以访问,如果用SSL,在没配置SSL之前是报错的:failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR 总结下区别:...
  • C++ | websocketpp ws转wss

    2020-11-23 11:25:21
    因为之前请求的ws接口会有连接不上的情况,所以需要把ws改成wss。经过两天的研究,终于搞清楚了ws与wss的区别。 一、概念 wss是 Web Socket Secure 的简称,它是 WebSocket 的加密版本。我们知道 WebSocket 中的...
  • SSL + WS-Security = Web Service安全保障

    千次阅读 2014-11-06 13:23:25
    今天早晨看了一下blog的留言,发现有位朋友给我留了言,提到了他正在研究SCA,同时也有些困惑,当在异构分布式环境的情况下,不论是否使用SCA规范来实现,都采用Web Service来完成面向服务的服务调用,觉得SCA没有...
  • SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以...
  • websocket wss 这个博客的第50条提示,是的!... 本技术提示将说明如何在WildFly上使用HTTPS / TLS保护WebSockets。 让我们开始吧! 创建一个新的密钥库: keytool -genkey -alias websocket -keyalg RSA -ke...
  • 是这个博客的第50条提示,是的!... 本技术提示将说明如何在WildFly上使用HTTPS / TLS保护WebSocket。 让我们开始吧! 创建一个新的密钥库: keytool -genkey -alias websocket -keyalg RSA -keystore websoc...
  • 最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk发布WS-Security的web services,使用WS-Security的Username Token验证方式。 所以需要...
  • As you know from "Introducing Metro," the reference implementations of the JAXB 2.x data-binding and JAX-WS 2.x Web services standards are at the core of the Metro Web services framework. But in ...
  • SSL和TLS协议格式

    千次阅读 2018-08-06 13:49:50
    SSL协议是网景公司(Netscape)推出的基于WEB应用的安全协议,SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、...
  • Websocket_WS_v1.0.0

    2020-12-13 11:47:26
    WS v1.0.0 学生宫布 8416837 SpringBoot 2.2.6SpringCloud Hoxton.SR4 套路 废话不多说,直接套路 代码 引入依赖 websocket <!-- websocket--> <dependency> <groupId>org.spring...
  • SSL WS-Security--Web Service安全保障

    千次阅读 2016-01-29 13:33:48
    今天早晨看了一下blog的留言,发现有位朋友给我留了言,提到了他正在研究SCA,同时也有些困惑,当在异构分布式环境的情况下,不论是否使用SCA规范来实现,都采用Web Service来完成面向服务的服务调用,觉得SCA没有...
  • WS-Trust 构建于 WS-Security 基础上,提供了一种交换安全令牌的方式,WS-SecureConversation 构建于 WS-Security 和 WS-Trust 基础上,改善了进行中的消息交换的性能。   WS-Security 构建于成熟的密码学以及 ...
  • 在Microsoft Exchange上提供和接受的TLS版本、TLS会话中使用的加密算法,这些都是受Windows 安全通道子系统控制(即Schannel),关于如何查看或者修改Windows使用了那种加密算法,可以参考这篇Technet文章:...
  • SSL、TLS协议格式入门学习

    千次阅读 2016-12-09 14:18:14
    SSL协议是网景公司(Netscape)推出的基于WEB应用的安全协议,SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、...
  • 学习Web开发,如果仅仅只是学习Web应用开发框架,那只是知其然不知其所以然。只有从最基础的原理开始学习,才能将知识都融会贯通,才能理解更深刻,走得更宽广。为此将自己的学习经验分享,写一个系列博客。 ...
  • SSL协议是网景公司(Netscape)推出的基于WEB应用的安全协议,SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、...
  • 实时Web与WebSocket实践

    千次阅读 2017-01-17 09:43:44
    实时Web越来越被重视,Google、Facebook等大公司也逐渐开始提供实时性服务。实时Web将是未来最热门的话题之一。 本文选自《基于MVC的JavaScript Web富应用开发》。
  • WS-Security在已建立的用于加密和XML加密和签名的行业标准的基础上,为Web服务应用程序提供了一套全面的安全功能。 您可以使用WS-Policy和WS-SecurityPolicy指定要用于特定应用程序的功能,从而允许服务的客户端自动...
  • openssl编写SSL、TLS程序

    2019-09-09 17:13:18
    SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC2246.SSL/TLS...
  • mongoose 嵌入web服务器 例子 参考: https://blog.csdn.net/wowocpp/article/details/116206013 settings_panel_for_a_device 6.10 ./settings_panel Starting device configurator on port 8000
  • Java Web 服务: Metro 服务下的 WS-Security

    千次阅读 2014-03-21 09:08:04
    Java Web 服务: Metro 服务下的 WS-Security 介绍如何在 Metro Web 服务框架下处理 WS-Security Metro Web 服务堆栈以 JAXB 2.x 参考实现和 JAX-WS 2.x Java™ 规范为基础,同时支持全套 WS-* SOAP 扩展技术...
  • 你将看到在Ubuntu中, 我们选用 mosquitto 作为 MQTT broker,介绍了 MQTT 协议相关的原理性知识和工作流,以及按步骤来描述如何搭建一个基于 SSL/TLS 的 MQTT broker,同时演示了订阅端和发布端该如何操作,并附上一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,777
精华内容 1,110
关键字:

tlswebws