zoukankan      html  css  js  c++  java
  • 网络之HTTPS

    HTTPS的基本概念

    HTTPS是披着SSL衣服的HTTP,由网景公司创造,所有浏览器都支持该协议。

    HTTPS = HTTP+SSL(TLS),TLS是传输层加密协议,前身是SSL协议。HTTPS没有将未加密的HTTP报文直接发送给TCP,HTTPS在讲发文发送TCP之前,先发送给安全层SSL或者TLS,进行加密,现在HTTP安全层是通过SSL将其替代协议TLS来实现的。

    HTTP和HTTPS的区别

    SSL是安全层,建立在SSL隧道上需要做隧道认证,至少要完成单向认证或者双向认证,之后数据,在传输的过程中都进行了加密处理;通常HTTP使用的业务层做的数据字段的加密是业务数据的加密,传输过程中是没有加密的;而HTTPS是经过加密的,安全认证的。

    • HTTP是无状态的,明文传输,而HTTPS是经过SSL/TLS加密的安全传输。
    • HTTP连接端口是80,HTTPS是443,两者的连接端口也不相同。
    • HTTP不需要申请证书,HTTPS需要向CA机构申请证书。
    • HTTP因为不需要加密因此传输更快,HTTPS效率慢但是更安全。

    HTTPS的优点

    • 服务端认证(防伪装)
    • 客户端认证(防伪装)通常现在web服务,不需要做客户端认证,只需要做服务器认证;
    • 客户端和服务器的数据不会被修改,因为整个传输过程是加密的。(完整性保护)
    • 客户端和服务器端的对话是加密的,不用担心被窃听,使用抓包工具监听HTTPS端口抓不到数据。
    • 所有客户端和服务器都支持这些协议

    对称加密和非对称加密

    对称加密

    加密和解密都是用同一个密匙,他的优点是运算速度块,缺点是传输秘钥不安全。

    非对称加密

    又称作公开秘钥加密,加密和解密都使用不同的秘钥。

    公钥所有人都能获取,通信发送方获得接收方的公钥后,可以使用公钥进行加密,接收方收到通信内容后使用私钥进行解密。

    有点事更安全的传输数据,缺点是运行速度慢。

    HTTPS采用的加密方式

    对称加密效率高但是不安全,非对称加密安全但是运算慢。HTTPS采用混合加密机制,使用非对称密钥加密,传输对称密钥加密方式所需要的密钥,从而保证安全性;获取密钥后,再使用对称加密进行通信,保证效率。

    认证

    CA是数字证书认证机构是客户端与服务器双方都可信赖的第三方机构。

    服务器的运行人员向CA提出公开密匙的申请,CA在判断申请者的身份后(有时会判断这个域名是不是属于你的公司),会对已经申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开的密钥证书绑定在一起。CA可以给你签发OV证书或者EV证书,他们还会人工验证你的公司是否符合他们的签发标准,这些是收费的,通常收费的证书申请的有效期是1年,免费申请的是3个月(DV证书Domain Validation)。

    证书的组成

    域名证书,证书链。CA还会根据你所申请的证书的配置环境是Nginx,IIS,Tomcat分为不同的文件,但是说到底其实我们需要的是一个证书链。

    证书中包含:颁发机构(用来寻找链中的下一个验证节点),证书的有效期,证书申请信息,公钥(与服务器的私钥是一对),签名(用于验证证书内容是否被篡改)

    流程如下,当用户访问已经申请证书的域名时,浏览器先判断这个服务器上的证书是不是可信的,关键一步是需要解密证书的签名部分,因为签名是由中间证书签发的,所以需要中间证书的公钥进行解密。如果解密后验证这个证书是合法的,然后再判断中间证书是否合法,因此仅需向上一级索要公钥,验证签名,直到进行到根证书,根证书是在操作系统中的,也就是在本地中可以找到根证书的公钥,如果系统没有,需要手动导入。

    使用openssl怎么制造证书

    首先安装OpenSSL软件,然后通过命令

    openssl req -new -newkey rsa:2048 -nodes -keyout www.test.com.key -out www.test.com.csr
    

    进入交互界面后,填写你的国家麻城市没名字,申请的域名,邮箱等。

    申请后会得到两个文件一个是xxx.key,另一个是xxx.csr。

    从域名角度分析,证书分为单域名,通配符域名,多域名证书。csr文件包含了证书申请的信息,加密和散列算法以及公钥,同时也有了自己的私钥。

    参考大牛的HTTPS原理详解

    CYC2018-Note

  • 相关阅读:
    IIS 设置IP地址和域名限制
    docker数据持久化
    用户远程登录空闲时间自动断开
    基于python的性能测试工具–locust
    Python代码发送post请求接口测试--转载
    loadrunner监控mysql服务性能
    jmeter for each,循环控制器 遍历结果
    jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
    在pycharm中链接MySql数据库并进行操作
    Python—pycharm连接数据库---自创
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121841.html
Copyright © 2011-2022 走看看