http与https的理解

来源:互联网 发布:小旭音乐 知乎 编辑:程序博客网 时间:2024/06/05 06:58

http与https的理解

先来看看http请求的参数内容都有哪些:

请求的参数详情:

Accept

作用: 浏览器端可以接受的媒体类型,

例如: Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html

也就是我们常说的html文档,

 Accept-Language

作用: 浏览器申明自己接收的语言。

语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;

例如: Accept-Language: en-us

Accept-Encoding:

作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不只是字符编码);

例如: Accept-Encoding: gzip, deflate

 User-Agent

作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.

例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)

Connection

例如: Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

Content-Length

作用:发送给HTTP服务器数据的长度。

例如: Content-Length: 38

 Pragma

作用: 防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样
Pargma只有一个用法, 例如: Pragma: no-cache

Cookie:

作用: 最重要的header, 将cookie的值发送给HTTP 服务器

Accept-Charset

作用:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

HTTPS协议的工作原理

Https是一种基于SSL/TLS的Http协议,所有的http数据都是在SSL/TLS协议封装之上传输的,,也属于应用层协议。

https加密的几种方式:

(1)对称加密和非对称加密

对称加密:是指加密和解密使用的密钥是同一个密钥,或者可以相互推算。

非对称加密:非对称加密和解密使用的密钥不是同一密钥,其中一个对外界公开,被称为公钥,另一个只有所有者知道。

(2)Hash加密

三次握手过程

1.浏览器将自己支持的一套加密规则发送给网站。2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。3.获得网站证书之后浏览器要做以下工作:a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。4.网站接收浏览器发来的数据之后要做以下的操作:a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。b) 使用密码加密一段握手消息,发送给浏览器。5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

请求htts的网站:

(1)生成keystore证书

keytool -genkey -v -keystore xxx.keystore -alias xxx -keyalg RSA -keysize 2048 -validity 10000  -storepass xxxxxxxx

(2)生成cer加密证书

keytool -export -alias jiandanshudian -file xxx.cer -keystore xxx.keystore -storepass xxxxxxxx

(3)找到tomcat/conf/sever.xml文件,并以文本形式打开。

在Service标签中,加入:

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="true" keystoreFile="/Users/pengdan/MyDocument/xxx.keystore" keystorePass="xxxxxxxx" maxSpareThreads="75" maxThreads="200" minSpareThreads="5" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS"  /> 

(4)打开浏览器输入url:https://localhost:8443/即可看到证书不可信任的警告了

1 0
原创粉丝点击