文档库 最新最全的文档下载
当前位置:文档库 › HTTPS协议

HTTPS协议

https

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

一、信任主机的问题.

采用https的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。所以目前所有的银行系统网站,关键部分应用都是

https 的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的服务器,采用的证书不管是自己发布的还是从公众的地方发布的,其客户端都是自己人,所以我们也就肯定信任该服务器。

二、通讯过程中的数据的泄密和被篡改

1.一般意义上的https,就是服务器有一个证书。

a) 主要目的是保证服务器就是他声称的服务器,这个跟第一点一样。

b) 服务端和客户端之间的所有通讯,都是加密的。

i. 具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。

ii. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。

2.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。

a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。

b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。[1]

限制

概述

它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持.

一种常见的误解是“银行用户在线使用https:就能充分彻底保障他们的银行卡号不被偷窃。”实际上,与服务器的加密连接中能保护银行卡号的部分,只有用户到服务器之间的连接及服务器自身。并不能绝对确保服务器自己是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击。少数罕见攻击在网站传输客户数据时发生,攻击者会尝试窃听传输中的数据。

商业网站被人们期望迅速尽早引入新的特殊处理程序到金融网关,仅保留传输码(transaction number)。不过他们常常存储银行卡号在同一个数据库里。那些数据库和服务器少数情况有可能被未授权用户攻击和损害。

TLS 1.1之前

这段仅针对TLS 1.1之前的状况。因为SSL位于http的下一层,并不能理解更高层协议,通常SSL服务器仅能颁证给特定的IP/端口组合。这是指它经常不能在虚拟主机(基于域名)上与HTTP正常组合成HTTPS。

这一点已被即将来临的TLS 1.1更新为—种完全支持基于域名的虚拟主机。

SSL介绍

SSL (Secure Socket Layer)

为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit 之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL。

当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。

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

SSL协议提供的服务主要有哪些?

1)认证用户和服务器,确保数据发送到正确的客户机和服务器

2)加密数据以防止数据中途被窃取

3)维护数据的完整性,确保数据在传输过程中不被改变。

SSL协议的工作流程

服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段

在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,

因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。

SSL协议的握手过程

为了便于更好的认识和理解SSL 协议,这里着重介绍SSL 协议的握手协议。SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:

①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。

⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。

⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。证书各部分的含义

如果要启用SSL通道,那么需要使用SSL证书来启用https协议,SSl 证书包含信息:

证书版本号,不同版本的证书格式不同

Serial Number 序列号,同一身份验证机构签发的证书序列号唯一

Algorithm Identifier 签名算法,包括必要的参数Issuer 身份验证机构的标识信息

Period of Validity 有效期

Subject 证书持有人的标识信息

Subject’s Public Key证书持有人的公钥

Signature 身份验证机构对证书的签名

证书的格式认证中心所发放的证书均遵循X.509 V3 标准,其基本格式如下:

证书版本号(Certificate Format Version)

含义:用来指定证书格式采用的X.509 版本号。

证书序列号(Certificate Serial Number)

含义:用来指定证书的唯一序列号,以标识CA 发出的所有公钥证书。

签名(Signature)算法标识(Algorithm Identifier)

含义:用来指定 CA 签发证书所用的签名算法。

签发此证书的 CA 名称(Issuer )

含义:用来指定签发证书的CA 的X.500 唯一名称(DN,Distinguished Name)。

证书有效期(Validity Period)起始日期(notBefore)终止日期(notAfter)

含义:用来指定证书起始日期和终止日期。

用户名称(Subject)

含义:用来指定证书用户的X.500 唯一名称(DN,Distinguished Name)。

用户公钥信息(Subject Public Key Information)算法(algorithm)算法标识(Algorithm Identifier)用户公钥(subject Publ ic Ke y)含义:用来标识公钥使用的算法,并包含公钥本身。

证书扩充部分(扩展域)(Extensions)

含义:用来指定额外信息。

X.509 V3 证书的扩充部分(扩展域)及实现方法如下:

CA 的公钥标识(Authority Key Identifier)

公钥标识(SET 未使用)(Key Identifier)

签发证书者证书的签发者的甄别名(Certificate Issuer)

签发证书者证书的序列号(Certificate Serial Number)

X.509 V3 证书的扩充部分(扩展域)及实现CA 的公钥标识(Authority Key Identifier)

公钥标识(SET 未使用)(Key Identifier)

签发证书者证书的签发者的甄别名(Certificat签发证书者证书的序列号(Certificate Serial Number)

含义:CA 签名证书所用的密钥对的唯一标识用户的公钥标识(Subject Key Identifier)

含义:用来标识与证书中公钥相关的特定密钥进行解密。

证书中的公钥用途(Key Usage)

含义:用来指定公钥用途。

用户的私钥有效期(Private Key Usage Period)起始日期(Note Before)终止日期(Note After)

含义:用来指定用户签名私钥的起始日期和终止日期。

CA 承认的证书政策列表(Certificate Policies)

含义:用来指定用户证书所适用的政策,证书政策可由对象标识符表示。

用户的代用名(Substitutional Name)

含义:用来指定用户的代用名。

CA 的代用名(Issuer Alt Name)

含义:用来指定 CA 的代用名。

基本制约(Basic Constraints)

含义:用来表明证书用户是最终用户还是CA。在SET 系统中有一些私有扩充部分(扩展域)Hashed Root Key 含义:只在根证书中使用,用于证书更新时进行回溯。

证书类型(Certificate Type)

含义:用来区别不同的实体。该项是必选的。

商户数据(Merchant Data)

含义:包含支付网关需要的所有商户信息。

持卡人证书需求(Card Cert Required)

含义:显示支付网关是否支持与没有证书的持卡人进行交易。

SET 扩展(SETExtensions)

含义:列出支付网关支持的支付命令的SET 信息扩展。

CRL 数据定义版本(Version)

含义:显示 CRL 的版本号。

CRL 的签发者(Issuer)

含义:指明签发 CRL 的CA 的甄别名。

CRL 发布时间(this Update)预计下一个CRL 更新时间(Next Update)撤销证书信息目录(Revoked Certificates)CRL 扩展(CRL Extension)CA 的公钥标识(Authority Key Identifier)CRL 号(CRL Number)

SSL证书种类

SSL证书现在市场上有很多种类,其中应用最为广泛的品牌为

VeriSign ,Geotrust ,Thawte ,Geotrust 与Thawte都已经被Verisign 收购,Verisign与其旗下所有证书品牌在中国官方代理为北京天威诚信。

HTTPS协议简介

下面我们来一起学习一下 HTTPS ,首先问你一个问题,为什么有了 HTTP 之后,还需要有 HTTPS ?我突然有个想法,为什么我们面试的时候需要回答标准答案呢?为什么我们不说出我们自己的想法和见解,却要记住一 些所谓的标准回答呢?技术还有正确与否吗? HTTPS 为什么会出现 一个新技术的出现必定是为了解决某种问题的,那么 HTTPS 解决了 HTTP 的什么问题呢? HTTPS 解决了什么问题 一个简单的回答可能会是HTTP 它不安全。由于 HTTP 天生明文传输的特性,在 HTTP 的传输过程中,任何人都有可能从中截获、修改或者伪造请求发送,所以可以认为 HTTP 是不安全的;在 HTTP 的传输过程中不会验证通信方的身份,因此 HTTP 信息交换的双方可能会遭到伪装,也就是没有用户验证;在 HTTP 的传输过程中,接收方和发送方并不会验证报文的完整性,综上,为了解决上述问题,HTTPS 应用而生。 什么是 HTTPS 你还记得 HTTP 是怎么定义的吗?HTTP 是一种超文本传输协议(Hypertext Transfer Protocol) 协议,它是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范,那么我们看一下 HTTPS 是如何定义的HTTPS 的全称是Hypertext Transfer Protocol Secure,它用来在计算机网络上的两个端系统之间进行安全的交

换信息(secure communication),它相当于在 HTTP 的基础上加了一 个Secure 安全的词眼,那么我们可以给出一个 HTTPS 的定义:HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。HTTPS 是 HTTP 协议的一种扩展,它本身并不保传输的证安全性,那么谁来保证安全性呢?在 HTTPS 中,使用传输层安全性(TLS)或安全套接字层(SSL)对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS。 HTTPS 做了什么 HTTPS 协议提供了三个关键的指标 ?加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。 ?数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的就是什么。 ?身份认证(Authentication),是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。 有了上面三个关键指标的保证,用户就可以和服务器进行安全的交换信息了。 那么,既然你说了 HTTPS 的种种好处,那么我怎么知道网站是用 HTTPS 的还是 HTTP 的呢?给你两幅图应该就可以解释了。

Apache配置HTTPS协议

Apache配置HTTPS协议搭载SSl配置全过程 1.安装必要的软件 从Apache官方(https://www.wendangku.net/doc/5c16982422.html,)下载必要的ApacheHttpServer安装包,可以直接官方提供的绑定openssl的apache.文件名是: httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi(我用的是Apache2.2.15for windows的版本,你可以点击此处下载最新的版本进行安装,最好选择含有openssl版本的哦) 否则单独安装windows下的openssl比较麻烦,要么找到一个第三方的编译结果,要么自己编译 安装完毕后检查检查在Apache安装路径的bin下是否有以下文件: openssl.exe

ssleay32.dll libeay32.dll 2. 生成服务器证书 安装好在bin目录下有一个openssl.exe文件,用来生成证书和密钥。 1). 生成服务器用的私钥文件server.key (注:在Windows操作系统环境下需先设置Openssl环境变量:在DOS命令下进入conf目录,执行命令行:set OPENSSL_CONF=..\conf\https://www.wendangku.net/doc/5c16982422.html,f;请在执行之前确保https://www.wendangku.net/doc/5c16982422.html,f存在,否则会出现:WARNING: can't open config file: /usr/local/ssl/https://www.wendangku.net/doc/5c16982422.html,f 信息提示。还有在windows系统下.cnf 默认会被当成快捷方式,看不到扩展名。) 在DOS命令下进入bin目录,执行命令行 命令:openssl genrsa 1024> server.key 说明:这是用128位rsa算法生成密钥,得到server.key文件>是输出文件的标识符这种生成方法生成的是没有密钥的私钥文件,当然,Apache提供了加入密钥(Password)的命令,就是加入参数-des3,全部的命令为: 命令:openssl genrsa 1024-des3 > server.key 使用 openssl genrsa -des3 > 1024 server.key生成私钥文件是需要输入密钥的,运行的时候会让你输入并确认你的密钥,但是在Windows环境下会导致以下错误: 错误:Apache启动失败,错误提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....) 原因是window下的apache不支持加密的私钥文件。可不使用des3加密。注:生成的证书中RSA密钥对的默认长度是1024,取值是2的整数次方。建议使用4096以上。

HTTPS传输协议原理介绍

HTTPS传输协议原理介绍 Hatter Jiang Apr 9th, 2008我们常常在使用网上银行时看到的连接都是以“https”开始的,那么这个https是什么呢?这其实是表示目前连接使用了SSL进行加密,能保证客户端到服务器端的通信都在被保护起来,那么浏览器是如果实现的呢?下面我们介绍一下SSL的基本实现方法。 首先我们有两种基本的加解密算法类型:对称加密,非对称加密(公私钥加密),现在介绍一下这两种加密算法的特点: 对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等,示意图如下: 图1 对称加密 非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等,示意图如下: 图2 非对称加密 根据上面的两种加密方法,现在我们就可以设计一种无法让他人在互联网上知道你的通讯信息的加密方法: 1.在服务器端存在一个公钥及私钥 2.客户端从服务器取得这个公钥 3.客户端产生一个随机的密钥 4.客户端通过公钥对密钥加密(非对称加密) 5.客户端发送到服务器端 6.服务器端接受这个密钥并且以后的服务器端和客户端的数据全部通过这个密钥加 密(对称加密) HTTPS通信过程的时序图如下:

图3 HTTPS通信时序图 正如上图所示,我们能保证下面几点: 1.客户端产生的密钥只有客户端和服务器端能得到 2.加密的数据只有客户端和服务器端才能得到明文 3.客户端到服务端的通信是安全的 当然实际的SSL实现算法复杂的多,并有数据校验、身份验证等功能,如果需要更多了角请参看RFC2246及RFC4346文档。 参考文献: [1] RFC2246 T. Dierks, C. Allen The TLS Protocol Version 1.0 [2] RFC4346 T.Dierks, E. Rescorla The Transport Layer Security (TLS) Protocol Version 1.1

大型互联网站点HTTPS实践(一):详解HTTPS协议和原理

大型互联网站点HTTPS实践(一):详解HTTPS协议和原理1 前言 百度作为搜索巨头,一举一动都牵动着大家神经。近日百度率先实行全站https加密搜索,默认将HTTP请求跳转成HTTPS,这一举措引起公众广泛关注和讨论。那么到底什么是https呢?全站部署https有什么重大意义?本文将重点介绍。 2 HTTPS 协议概述 HTTPS 可以认为是HTTP + TLS。HTTP 协议大家耳熟能详了,目前大部分WEB 应用和网站都是使用HTTP 协议传输的。 TLS 是传输层加密协议,它的前身是SSL 协议,最早由netscape 公司于1995 年发布,1999 年经过IETF 讨论和规范后,改名为TLS。如果没有特别说明,SSL 和TLS 说的都是同一个协议。 HTTP 和TLS 在协议层的位置以及TLS 协议的组成如下图: 图1 TLS 协议格式 TLS 协议主要有五部分:应用数据层协议,握手协议,报警协议,加密消息确认协议,心跳协议。

TLS 协议本身又是由record 协议传输的,record 协议的格式如上图最右所示。 目前常用的HTTP 协议是HTTP1.1,常用的TLS 协议版本有如下几个:TLS1.2, TLS1.1, TLS1.0 和SSL3.0。其中SSL3.0 由于POODLE 攻击已经被证明不安全,但统计发现依然有不到1% 的浏览器使用SSL3.0。TLS1.0 也存在部分安全漏洞,比如RC4 和BEAST 攻击。 TLS1.2 和TLS1.1 暂时没有已知的安全漏洞,比较安全,同时有大量扩展提升速度和性能,推荐大家使用。 需要关注一点的就是TLS1.3 将会是TLS 协议一个非常重大的改革。不管是安全性还是用户访问速度都会有质的提升。不过目前没有明确的发布时间。 同时HTTP2也已经正式定稿,这个由SPDY 协议演化而来的协议相比HTTP1.1 又是一个非常重大的变动,能够明显提升应用层数据的传输效率。 3 HTTPS 功能介绍 百度使用HTTPS 协议主要是为了保护用户隐私,防止流量劫持。 HTTP 本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。 这里提到的中间者主要指一些网络节点,是用户数据在浏览器和百度服务器中间传输必须要经过的节点。比如WIFI 热点,路由器,防火墙,反向代理,缓存服务器等。 在HTTP 协议下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过HTTPS 是这些劫持行为的克星,能够完全有效地防御。

HTTPS协议

https HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。 一、信任主机的问题. 采用https的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。所以目前所有的银行系统网站,关键部分应用都是

https 的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的服务器,采用的证书不管是自己发布的还是从公众的地方发布的,其客户端都是自己人,所以我们也就肯定信任该服务器。 二、通讯过程中的数据的泄密和被篡改 1.一般意义上的https,就是服务器有一个证书。 a) 主要目的是保证服务器就是他声称的服务器,这个跟第一点一样。 b) 服务端和客户端之间的所有通讯,都是加密的。 i. 具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。 ii. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。 2.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。 a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。 b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。[1] 限制 概述 它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持. 一种常见的误解是“银行用户在线使用https:就能充分彻底保障他们的银行卡号不被偷窃。”实际上,与服务器的加密连接中能保护银行卡号的部分,只有用户到服务器之间的连接及服务器自身。并不能绝对确保服务器自己是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击。少数罕见攻击在网站传输客户数据时发生,攻击者会尝试窃听传输中的数据。 商业网站被人们期望迅速尽早引入新的特殊处理程序到金融网关,仅保留传输码(transaction number)。不过他们常常存储银行卡号在同一个数据库里。那些数据库和服务器少数情况有可能被未授权用户攻击和损害。 TLS 1.1之前 这段仅针对TLS 1.1之前的状况。因为SSL位于http的下一层,并不能理解更高层协议,通常SSL服务器仅能颁证给特定的IP/端口组合。这是指它经常不能在虚拟主机(基于域名)上与HTTP正常组合成HTTPS。

HTTPS协议

HTTPS(Secure Hypertext Transfer Protocol)--安全超文本传输协议 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP 应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。 WWW的核心——HTTP协议 众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP、Archie Gopher等是建立在TCP/IP协议之上的应用层协议,不同的协议对应着不同的应用。
WWW 服务器使用的主要协议是HTTP协议,即超文体传输协议。由于HTTP协议支持的服务不限于WWW,还可以是其它服务,因而HTTP协议允许用户在统一的界面下,采用不同的协议访问不同的服务,如FTP、Archie、SMTP、NNTP等。另外,HTTP协议还可用于名字服务器和分布式对象管理。 2.1 HTTP协议简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 2.2 HTTP协议的几个重要概念 1.连接(Connection):一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。 2.消息(Message):HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连接传输。 3.请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号 4.响应(Response):一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。

https协议的全称呢

竭诚为您提供优质文档/双击可除 https协议的全称呢 篇一:https协议 https https(全称:hypertexttransferprotocoloversecuresocketlayer),是以安全为目标的http通道,简单讲是http的安全版。即http 下加入ssl层,https的安全基础是ssl,因此加密的详细内容就需要ssl。它是一个uRischeme(抽象标识符体系),句法类同http:体系。用于安全的http数据传输。https:uRl 表明它使用了http,但https存在不同于http的默认端口及一个加密/身份验证层(在http与tcp之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。 一、信任主机的问题. 采用https的服务器必须从ca(certificateauthority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。所以目前所有

的银行系统网站,关键部分应用都是 https的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的服务器,采用的证书不管是自己发布的还是从公众的地方发布的,其客户端都是自己人,所以我们也就肯定信任该服务器。 二、通讯过程中的数据的泄密和被篡改 1.一般意义上的https,就是服务器有一个证书。 a)主要目的是保证服务器就是他声称的服务器,这个跟第一点一样。b)服务端和客户端之间的所有通讯,都是加密的。 i.具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。 ii.接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。 2.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。a)这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个ca认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。 b)目前少数个人银行的专业版是这种做法,具体证书可

HTTPS协议研究

HTTPS协议研究 原理:HTTPS协议位于TCP/IP协议与应用层各协议之间,是基于HTTP协议的一种 对传输数据加密的协议。可以将其简要分解为:HTTP+SSL.它建立在可靠的传输协议之上(如TCP协议等。)当数据经过TCP协议封装之后,SSL会对数据包进行进一步的加密和封装,然后让加密之后的数据包经过HTTP协议的进一步封装之后走在公共信道之上,加密之后的数据包能保证即使数据包被第三方截取之后也不能看到数据包里面的明文。 SSL协议可以提供以下三方面的安全功能服务(也可由下图1.1.1给出): (1)信息加密:在信息传输之前对需要传输的信息进行加密,主要的机密技术有对称加密技术(如DES、IDEA),也有非对称加密技术(如RSA),本文采用的是 RSA技术,在后文将进一步讲述。 (2)身份认证:SSL协议要求在握手交换数据之前进行身份验证,其中包括对服务器的验证和对客户的验证,主要的身份认证技术有RSA(数字签名技术)、DSA(数 字签名算法)、和ECDSA(椭圆曲线数字签名算法),本文采用的是RSA。 (3)信息完整性校验:在客户和服务器接收到数据后,双方需要验证数据在传送或者存储过程中未被篡改、删除或者插入等。即通信的发送方通过散列函数产生消息 验证码(MAC),接收方通过验证MAC来保证信息的完整性,此文运用MD5 算法来进行信息完整性的校验。 图1.1.1(来自百度)

解说上面的SSL会话过程: (注:SSL会话建立的前提是服务器端在本地通过非对称加密算法(RSA)生成一对密钥(包含密钥和公钥),并将公钥信息发送给CA证书颁发机构,CA给服务器端颁发数字证书,并将证书发送至服务器端。在本次实验中,服务器端也是证书颁发机构。) SSL会话建立过程: 第一步:客户端向服务器端建立连接请求(TCP/IP) 第二步:当TCP/IP建立完成后,客户端和服务器之间协商使用哪种加密算法,本文加密算法为RSA。 第三步:协商完成后,服务器将公钥发送给客户端,客户端接收公钥信息。 第四步:客户端到CA证书颁发机构下载CA公钥信息,并对服务器端发送的证书做验证。第五步:随后,客户端在本地通过对称加密算法生成密钥,然后用服务器端发送的公钥进行对这段密钥进行加密,发送至服务器端,其保证了数据的机密性。 第六步:服务器用自己的私钥对这段数据进行解密,得到密钥,然后将客户端的请求数据进行加密发送给客户端。 第七步:客户端接到响应,并用密钥进行解密,得到数据。 第八步:通信结束后,断开会话通道(TCP/IP) 实现: 环境:在windows server 2003 下建立站点,用windows server 2003 以及windows 7去访问加密的站点 安装软件以及服务:Ethereal 抓包工具 iis服务证书服务 思想: (1)安装虚拟机 windows server 2003 虚拟机连接的方式设为NAT连接,通过虚拟网卡来连接网络。 (2)在windows server 2003 上安装iis组件 主要步骤: 1.在windows server 2003 中利用信息服务(iis)创建站点 2.然后安装证书服务 3.在Web服务器上设置ssl,生成证书申请 4.在IE浏览器中提交证书申请 5.在证书颁发机构颁发证书 6.在IE浏览器中下载证书并在Web服务器中安装证书 7.完成证书的申请和下载后,可以访问站点。 具体实现步骤以及截图: 1,安装iis,创建站点

HTTP协议转换成HTTPS协议

HTTP协议转换成HTTPS协议 考虑到数据的安全敏感性采用https是超文本传输协议(HTTP)加SSL/TLS(数据链接层加密技术)的组合,用以鉴定网络服务器身份并且提供用户与服务器加密通讯。 本文以jboss-4.2.3.GA版本为例讲解配置https方法。(tomcat在后面) 一、为服务器生成证书keystore密钥文件 1.以下是我在cmd中的操作: %JAVA_HOME%\bin\keytool -genkey -alias server -keyalg RSA -keystore f:\server.keystore -validity 3650 或有相应提示输入提示信息 在F盘生成了一个server.keystore密钥文件。 -alias server key的别名。具体参数见本文档附录最后。 二、将生成好的server.keystore放入你的jboss安装目录 生成完后server.keystore放入D:\ jboss-4.2.3.GA\server\default\conf中。 三、修改server.xml文件 1.修改D:\jboss-4. 2. 3.GA\server\default\deploy\jboss-web.deployer 目录下的 server.xml文件。 2.找到

keystoreFile="${jboss.server.home.dir}/conf/server.keystore" keystorePass="123456" clientAuth="false" sslProtocol="TLS" 也可不去掉注释增加如下代码: keystoreFile:server.keystore 在jboss中的位置,在第二步中放的位置 keystorePass:在cmd命令中输入的key密码一定要一直 sslProtocol="TLS":加密方式 可以参考官网https://www.wendangku.net/doc/5c16982422.html,/jbossweb/3.0.x/ssl-howto.html 四、修改项目中web.xml配置文件增加如下配置。 HtmlAdaptor An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application *.do Protection should be CONFIDENTIAL CONFIDENTIAL

HTTPS协议工作原理介绍

HTTPS协议工作原理介绍 随着网络越来越普及,应用越来越广泛,一些网络安全问题也会越来越引起网民的关注。近日百度开放收录HTTPS引起了大家对HTTPS讨论的热潮,那么什么是https,HTTPS的工作原理又是什么?本位给大家介绍HTTPS协议工作原理。 一、什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。 二、HTTPS安全吗 这个答案是肯定的,很安全。谷歌公司已经行动起来要大力推广HTTPS的使用。百度也率先启用了全站HTTPS搜索,并且开放收录HTTPS站点。个人站长可到沃通CA等机构去申请免费SSL证书进行网站HTTPS加密。 三、HTTPS工作原理 HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的简单描述如下: 1.浏览器将自己支持的一套加密规则发送给网站。 2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。 3.获得网站证书之后浏览器要做以下工作: a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。 4.网站接收浏览器发来的数据之后要做以下的操作: a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。

IIS上如何发布HTTPS协议的网站(详细图解)

IIS6使用指南之六:在IIS中部署HTTPS服务 【来源:https://www.wendangku.net/doc/5c16982422.html, 作者:风间子更新时间:2007-05-14 | 字体:大中小】 分享到新浪微博 在IIS中部署HTTPS服务非常简单,所需要的就是在Web服务器上具有服务器身份验证证书,并将证书绑定在Web站点。如果Web服务器属于活动目录并且活动目录中具有在线的企业证书颁发机构,则可以在配置过程中在线申请并自动安装Web服务器证书,否则你需要离线申请Web服务器证书。 申请Web服务器证书的步骤如下: 在Web服务器上运行管理工具下的Internet信息服务管理控制台,在左面板展开Web站点节点,然后右击需要部署HTTPS服务的网站,在此我右击默认网站,选择属性; 在默认网站属性对话框,点击目录安全性标签,然后点击服务器证书按钮;

在欢迎使用Web服务器证书向导页,点击下一步; 在服务器证书页,选择新建证书,点击下一步;如果已经具有其他的服务器身份验证证书,则可以选择分配现有证书来将现有证书分配给此Web站点;

接下来的操作步骤我根据证书申请方式的不同,分别进行介绍: 离线申请证书 如果活动目录中没有在线的企业证书颁发机构或者Web服务器并不位于活动目录环境中,那么你必须离线申请Web服务器证书。 在延迟或立即请求页,选择现在准备证书请求,但稍后发送,然后点击下一步;

在名字和安全性设置页,在名称栏为新证书输入一个容易分辨的名字,然后点击下一步;

在单位信息页,在单位和部门栏中分别输入相关信息,然后点击下一步; 在站点公用名称页,输入Web站点的FQDN https://www.wendangku.net/doc/5c16982422.html,,然后点击下一步;

http协议与https协议的区别

http协议与https协议的区别 大家打开网页时,会发现大多数网站都是以http协议开头的,当然也有发现少部分以https开头,例如淘宝,那么,http协议和https协议哪个更安全呢? 小编在这里详细介绍给大家。 HTTP,即超文本传输协议,是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP 最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。 虽然是当前使用最广泛的协议,但是HTTP协议以明文方式发送内容,不提供任何方式的数据加密,这导致这种方式特别不安全。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。 所以HTTPS协议正是为解决该问题而生,它可以称之为HTTP协议的安全版。

安全套接字层超文本传输协议HTTPS为了数据传输的安全,在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 相比之下,HTTPS和HTTP的不同主要有以下四点: 一、https协议需要到ca申请证书,一般免费证书很少,需要交费。 二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

相关文档