浅谈https

https是什么/http及https的区别/https的做用/https的原理/在本身本地怎么开启https/网站如何适配https/开启https以后对网站的速度有什么影响/怎样使浏览器默认用https打开网页

https是什么?

https是http的加密版本,是在http请求的基础上,采用ssl进行加密传输。http默认是80端口,而https默认是443端口。nginx

http及https的区别

以下图所示,https在http多出了一个安全层的概念。而且http是明文传输,很容易被窃听,被篡改,被冒充。而在https里面的加密,签名,证书能够很完美地解决这些问题。
图片描述算法

https的原理

在了解https的原理以前,须要先了解下面几个重要的概念。chrome

1.非对称加密:加密和解密的秘钥不同。计算量大,速度慢。(只有在协商对称秘钥时采用到。)
2.对称加密:加密和解密的秘钥同样。计算量小,速度快。(只有在通讯时候才用到。)
3.签名:为了防止被篡改。
4.数字证书:为了防止被冒充,须要去CA申请证书。

接下来就要用一个颇有名的bob和他的三个朋友的故事先来铺垫一下原理。
以下图所示,bob有三个朋友Pat,Doug,Susan。
图片描述浏览器

  1. bob想要跟他的朋友通讯,可是不想用明文传输,以避免其余人窃听。因而他建立了两个钥匙。一个私钥,一个公钥。私钥本身留着。公钥发给他的朋友们。他朋友们发给他的信息加密以后,bob能够用私钥解密查看。bob加密发送信息给他的朋友们以后,朋友们能够用公钥解密查看。
  2. 可是bob发现,由于他的公钥是公共的,他发送给朋友的信息可能会被别人篡改。因而他把新的内容hash处理以后再用私钥加密成签名,一块儿发送给朋友。朋友得到信息以后,用公钥解密签名获得Digest。而后再用一样的hash去解密内容得到Digest。最后看这两个Digetst是否相等。若是相等则内容未被修改。如图中2所示。
  3. 可是有一个同窗Tony获取了bob的公钥以后冒充bob去跟susan通信。被bob发现了以后他去第三方证书中心作认证。证书中心用本身的私钥对Bob的公钥和其它信息作了一次加密。这样Bob经过网络将数字证书传递给他的小伙伴后,小伙伴们先用CA给的公钥解密证书,这样就能够安全获取Bob的公钥了。

可是,其实https的通讯会比上面复杂不少,能够看下面的图片。
图片描述安全

  1. 浏览器向往服务器的443端口发起请求,请求携带了浏览器支持的加密算法及哈希算法。
  2. 服务器收到请求,服务器会选择浏览器支持的加密算法和哈希算法。
  3. 服务器下将数字证书返回给浏览器,这里的数字证书能够是向某个可靠机构申请的,也能够是自制的。
  4. 浏览器进入数字证书认证环节,这一部分是浏览器内置的TLS完成的:
    4.1 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,若是没有找到,此时就会提示用户该证书是否是由权威机构颁发,是不可信任的。若是查到了对应的机构,则取出该机构颁发的公钥。
    4.2浏览器生成一个随机数R,并使用网站公钥对R进行加密
  5. 浏览器将加密的R传送给服务器。
  6. 服务器用本身的私钥解密获得R。
  7. 服务器以R为密钥使用了对称加密算法加密网页内容并传输给浏览器。
  8. 浏览器以R为密钥使用以前约定好的解密算法获取网页内容。

如图所示,1-5步是https的握手过程,他是用非对称加密算法获取了秘钥R。在6-8步是服务器及浏览器的通讯过程,是用秘钥R进行对称加密通讯。服务器

本地怎么开启https?

生成私钥和证书网络

  1. 首先,进入你想建立证书和私钥的目录,
  2. 建立服务器私钥,命令会让你输入一个口令:
    openssl genrsa -des3 -out server.key 1024
  3. 建立签名请求的证书(CSR):
    openssl req -new -key server.key -out server.csr
  4. 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
    cp server.key server.key.org
    openssl rsa -in server.key.org -out server.key
  5. 最后标记证书使用上述私钥和CSR:
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

配置nginx
图片描述网站

重启nginx后在打开网页便会获得下面的提示
图片描述
固然,chrome能够配置信任证书,这个能够百度~加密

网站如何适配

http资源没法加载。js文件会直接提示加载不到。图片等文件会提示报警mixed content。固然,以前chrome有个版本是在https的网页,直接不显示图片。后来为了用户体验,显示图片可是会警告。
而在咱们的网站中,在加载资源时,是须要协议头便可。页面会自适应在http时自动添加http头,https时自动添加https头。spa

https速度影响

https须要加密解密,须要交换私钥/公钥,确定须要消耗时间。据统计,通常https的链接时间是http的三倍。

怎样使浏览器默认用https打开网页

HTTP strict transport security:该协议会使浏览器默认采用https访问。以下图天猫的加载。
图片描述

相关文章
相关标签/搜索