网络之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

原文地址:https://www.cnblogs.com/dataoblogs/p/14121841.html