HTTPS:超文本安全传输协议,和HTTP相比,多了一个SSL/TSL的认证过程,端口为443
在http(超文本传输协议)基础上提出的一种安全的http协议,因此可以称为安全的超文本传输协议。http协议直接放置在TCP协议之上,而https提出在http和TCP中间加上一层加密层(SSL层)。

从发送端看,这一层负责把http的内容加密后送到下层的TCP,从接收方看,这一层负责将TCP送来的数据解密还原成http的内容。

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL中使用了非对称加密,对称加密以及HASH算法。

握手过程的具体描述如下:

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

HTTPS一般使用的加密与HASH算法如下:

非对称加密算法:     RSA, DSA/DSS
对称加密算法:    AES,RC4,3DES
HASH算法:     MD5,SHA1,SHA256

openssl自建证书:(Win64OpenSSL_Light-1_1_0g.exe版本)

创建用私钥签名的证书,配置到iis服务器:

简化版,只对iis提供证书,没有ca根证书

genrsa -out myself.key 2048

req -new -x509 -key myself.key -out myself.cer -days 3650 -subj /CN=127.0.0.1

pkcs12 -export -out myself.pfx -inkey myself.key -in myself.cer

然后在iis->服务器证书->导入myself.pfx证书

网站中重新绑定,协议https,端口443,然后在hosts中设置即可通过https访问。

加密版本:

生成私钥
genrsa -des3 -out private.key 2048
des3代表加上了加密,后面的2048是代表生成的密钥的位数,1024已经不是很安全 生成服务器的私钥,去除密钥口令
rsa -in private.key -out server.key 生成证书请求
req -new -key private.key -out server.csr -days 36500 -subj /CN=127.0.0.1 使用私钥为证书请求签名,生成给服务器签署的证书,格式是x509的PEM格式
x509 -req -in server.csr -out server.crt -outform pem -signkey server.key -days 3650
-outform pem指定证书生成的格式,默认是pem,所以这个命令也可以写作成
x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
-输出格式为cer格式
x509 -req -in server.csr -out server.cer -signkey server.key -days 3650 iis需要的pfx格式的证书,现在转换格式:iis.pfx
pkcs12 -export -clcerts -in server.cer -inkey server.key -out iis.pfx

安装cer证书的时候,一定要安装到受信任的根证书颁发机构,虽然其他的也能访问,但是浏览器会提示不安全。

根证书:

创建私钥:ca.key

genrsa -out ca/ca.key 1024

创建证书请求 : ca.csr

OpenSSL>  req -new -out ca/ca.csr -key ca/ca.key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:shanghai
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:dfrzw
Organizational Unit Name (eg, section) []:dfrzw
Common Name (e.g. server FQDN or YOUR name) []:***.rongzi
Email Address []:hongda159505@aliyun.com Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:hongdada
An optional company name []:dfrzw

上述可直接在命令中用-subj跟在语句后面,如:

req -new -out ca/ca.csr -key ca/ca.key -days 3650 -subj /CN=127.0.0.1

自签署证书 :ca.cer

x509 -req -in ca/ca.csr -out ca/ca.cer -signkey ca/ca.key -days 3650

3650,设置10年的证书有效期

将证书导出成浏览器支持的.p12格式 :

pkcs12 -export -clcerts -in ca/ca.cer -inkey ca/ca.key -out ca/ca.p12

我这边的密码是:hongdada

创建server证书:

创建私钥:server.key

genrsa -out server/server.key 1024

创建证书请求 : server.csr

req -new -out server/server.csr -key server/server.key -days 3650 -subj /CN=127.0.0.1

自签署证书 :server.cer

x509 -req -in server/server.csr -out server/server.cer -signkey server/server.key -CA ca/ca.cer -CAkey ca/ca.key -CAcreateserial -days 3650

将证书导出成浏览器支持的.p12格式 :server.p12

pkcs12 -export -clcerts -in server/server.cer -inkey server/server.key -out server/server.p12

iis需要的pfx格式的证书,现在转换格式:iis.pfx

pkcs12 -export -clcerts -in server/server.cer -inkey server/server.key -out server/iis.pfx

使用Wireshark抓包https:

http://joji.me/zh-cn/blog/walkthrough-decrypt-ssl-tls-traffic-https-and-http2-in-wireshark

tcp.ssl:

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

http://blog.csdn.net/shion0305/article/details/73776449

https://www.cnblogs.com/walkerwang/p/4910799.html

http://blog.csdn.net/mooncom/article/details/60140372

http://blog.csdn.net/sdsabc2000/article/details/77028635

http://www.cnblogs.com/AloneSword/p/4656492.html

http://blog.csdn.net/sxy2475/article/details/77918108?locationNum=2&fps=1?%3E

http://blog.csdn.net/PZ0605/article/details/51954876

Https流程,openssl本地自建证书,抓包的更多相关文章

  1. Android导入Burp Suite证书抓包HTTPS

    需求 Android APP安全测试时,主要工作分为: APK安全 业务安全 APK安全这里不讨论,我说说业务安全,因为大部分的业务校验逻辑还是放在Servier端,这里就会涉及到网络通信了.因此网络 ...

  2. Windows版 charles安装证书抓包网页HTTPS

    1.在Charles官网https://www.charlesproxy.com/download/下载,我这边下载的是免费体验版的. 2.安装好以后打开,配置Charles证书:选择 help--S ...

  3. Fidder详解-抓取HTTPS清求(Web/App)抓包分析(靠谱篇)

    为什么要学Fidder抓包? 学习接口,必须要学http协议,不要求您对协议的掌握有多深.只是希望你能够了解什么是协议.协议的报文.状态码等等!本文通过抓包工具Fidder带你进入接口的大门.我们通过 ...

  4. 部署asp.net core Kestrel 支持https 使用openssl自签ssl证书

    通过openssl生成证书 openssl req -newkey rsa:2048 -nodes -keyout my.key -x509 -days 365 -out my.cer openssl ...

  5. IOS https抓包及10.3.3版本证书不生效问题解决

    Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Charles:https://www.charlesproxy.com/download/ 2. HTTP抓包 ...

  6. https wireshark抓包——要解密出原始数据光有ssl 证书还不行,还要有浏览器内的pre-master-secret(内存里)

    基于wireshark抓包的分析 首先使用wireshark并且打开浏览器,打开百度(百度使用的是HTTPS加密),随意输入关键词浏览. 我这里将抓到的包进行过滤.过滤规则如下 ip.addr == ...

  7. 接口测试之——Charles抓包及常见问题解决(转载自https://www.jianshu.com/p/831c0114179f)

    简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charl ...

  8. 十分钟学会Charles抓包(iOS的http/https请求)

    ### 原文地址,感谢作者 : http://www.jianshu.com/p/5539599c7a25 Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Ch ...

  9. 43.Charles抓包(iOS的http/https请求)

    Charles安装 HTTP抓包 HTTPS抓包     1. Charles安装 官网下载安装Charles: https://www.charlesproxy.com/download/ 2. H ...

随机推荐

  1. Python 目录【持续更新中】

    Python 基础 字符编码 数据类型 文件处理 流程控制 练习题 函数,递归 匿名函数.内置函数 装饰器变形记 函数装饰器 递归 二分法 迭代器和生成器 协程函数 列表表达式 生成器表达式 异常处理 ...

  2. 【Loadrunner】Error -26601: Decompression function 错误解决、27728报错解决方案

       一. Error -26601: Decompression function 错误解决 Action2.c(30): Error -26601: Decompression function ...

  3. 用setup.py安装第三方包packages

    这次要说的是用setup.py 来安装第三方包.步骤如下: 步骤:setup.py 先下载你要安装的包,并解压到磁盘下: 进入到该文件的setup.py 目录下 ,打开cmd,并切换到该目录下: 先执 ...

  4. php array_rand()函数从数组中随机选择一个或多个元素

    php使用array_rand()函数从数组中随机选择一个或多个元素的方法. 使用array_rand() 函数从数组中随机选出一个或多个元素,并返回.  array_rand(array,numbe ...

  5. myeclipse连接sql server2008 r2数据库

    我用的myeclipse自带的jdk1.6连接的,所以选用sqljdbc4.jar的jar包,我是win7电脑 之前也看到一些用户留的微软官方连接,但是官方那边已经取消下载了,所以我重新去找了下 链接 ...

  6. http协议基础(十一)http与https

    一.http的缺点 之前有介绍过http协议相关的一些知识,http是相当优秀和方便的,但它也有缺点,主要不足表现在如下几个方面: △ 通信使用明文(不加密),内容可能会被窃听 △ 不验证通信方的身份 ...

  7. 【笔记】DataTable或IList使用GroupBy方法的lamda表达式

    DataTable GroupBy的用法 var result = dt.AsEnumerable(). GroupBy(g => new { StaffID = g.Field<stri ...

  8. jquery ui draggable,droppable 学习总结

    刚接触的时候,分不清draggable和droppable的区别,瞎弄了一会,其实很简单,draggable就是“拖”的功能,droppable就是“放”的功能. draggable()是被拖动的元素 ...

  9. Intro to Python for Data Science Learning 4 - Methods

    Methods From:https://campus.datacamp.com/courses/intro-to-python-for-data-science/chapter-3-function ...

  10. 20155239 2016-2017-2 《Java程序设计》第5周学习总结

    教材内容学习 第八章 JAVA异常架构 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性 ...