Https流程,openssl本地自建证书,抓包
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