zoukankan      html  css  js  c++  java
  • 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
    View Code

    安装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

  • 相关阅读:
    redis的间隔性速度慢的问题
    centos增加静态路由
    排查问题的一些基本命令
    laradock
    python之sqlalchemy基本
    ssl证书之certbot
    mysql 多实例
    模块和包
    异步
    WSGI
  • 原文地址:https://www.cnblogs.com/hongdada/p/8304954.html
Copyright © 2011-2022 走看看