一. 网络安全之Http与Https

Http协议是互联网行业中设计的最好架构之一。20多年间,应用Http协议传输数据的软件越来越多,企图从http协议传输中非法获取、篡改用户重要数据的非法行为也越来越多。Http由于自身采用明文传输,无法在协议底层对数据进行保护,这就需要软件开发人员在应用层中自行开发,极大的降低了开发速度。为了更好的在底层解决网络安全的问题,Https出现在了大家的视野。

1. Https原理:

在OSI七层模型中,Http是应用层的协议,Https在表示层,Https在Http之上进行了与网络安全相关的所有操作。这样就可以使Http协议无感知的升级到Https。我们在日常开发时也会注意到,开发Http的应用和Https的应用并没有什么不同,只需要修改一些配置就可以在Http协议和Https协议之间随意切换。接下来我们看一下Https是如何保障网络安全的。

在介绍Https的原理之前,我们先来讲解一些Https中用到的一些概念:

1)对称加密与非对称加密

对称加密只用一个密钥,发送方用一个对称加密的算法(函数)和密钥对内容进行加密,接收方使用同样的对称加密算法和密钥对内容进行解密。对称加密的优点是,无论时加密还是解密都是很快的,只需要遍历一次数据即可,时间复杂度时O(n)。缺点是,对称加密的算法和密钥比较容易被第三方破解。

非对称加密有一个私钥、一个公钥,发送方用私钥对内容进行加密,并将公钥发送给接收方,接收方拿到数据后用发送方的公钥对内容进行解密。非对称加密的优缺点与对称加密正好相反,它如今依然可以被认为是无法破解的,但是需要消耗的资源也较多。

2)Hash加密

任意长度的输入,通过Hash算法,都会变成固定长度的输出,该输出也较散列值。Hash算法都是不可逆的,主要用于信息安全领域,可以把它理解为为内容生成了一个IdentityCode,两者之间有一个映射关系。但是Hash算法只能保证相同的输入会得到相同的输出,不能保证不同的输入得到不同的输出,这点比一下输入的长度和输出的长度也会知道。所以,Hash算法输出值的字节数越大,其对抗强行攻击的强度也就越大。

  3)密码套件

    密码套件在https协议中用来标识服务端和客户端的通讯都使用哪些算法。

    举个密码套件的例子:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

      ECDHE:密钥交换的椭圆曲线算法,用于生成非对称加密的公钥、密钥

      RSA:非对称加密算法,用于身份验证

      AES_128_GCM:对称加密算法、强度、分组模式,用于数据的加密

      SHA256:签名Hash算法

概要来说,Https主要做了三件事:

1)内容加密

采用混合加密(对称加密+非对称加密)的方式,对要传输的数据进行加密,保证除了客户端以外的任何环节都无法查看到明文内容。

​    ​​Https协议要求服务端和客户端都生成自己的非对称加密密钥,服务端还会生成一个对称加密密钥。首先服务端用对称加密对数据进行加密,并将这个对称加密的密钥用客户端的非对称加密的公钥进行加密。客户端收到这两个加密数据后,首先用自己的私钥得到对称加密的密钥,再用对称加密算法将原明文内容解密出来。

2)验证身份

验证数据传输方的身份,保证数据来源是已被CA验证的可信任网站。

​    ​    ​客户端在连接Https请求时,会到CA证书池中验证证书是否有效,是否过期等。也会通过非对称加密的算法是否可以进行解密来进行身份验证。

3)保护数据完整性

通过Hash算法对数据加密,保证数据在传输过程中没有被篡改。

​    ​        ​服务端用Hash算法对要传输的数据进行加密生成一个数字签名。客户端收到签名后,将解密出来的原明文内容再进行一次相同的Hash算法,并比较两者的值,如果相同则认为数据没有被篡改过。

二. 利用Nginx实现https

​用免费SSL证书实现一个HTTPS站点

​1. 下载python2-certbot-nginx

​    ​python2-certbot-nginx下载教程

​2. 使用certbot命令安装

​    ​命令:certbot --nginx --nginx-server-root=/home/tesla/nginx/conf/vhost/ -d 域名

​    ​执行命令后,certbot会让你做一个选择,是否重定向将http请求转换为https。

注:    ​certbot --nginx需要将nginx设置为系统变量。

​    ​    ​  --nginx-server-root是保存conf的文件位置,不设置则会修改默认的nginx.conf。

​3. 执行完前两步,就已经配置完https了。我们可以查看nginx.conf,都做了哪些改变。

[Day3] Nginx配置Https的更多相关文章

  1. Nginx配置Https

    1.申请证书: https://console.qcloud.com/ssl?utm_source=yingyongbao&utm_medium=ssl&utm_campaign=qc ...

  2. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  3. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...

  4. Nginx 配置https 服务

    一.HTTPS 服务 为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 HTTPS加密校验 ...

  5. nginx配置https转发到tomcat(使用自签名的证书)

    一.使用openSSL生成自签名的证书 1.生成RSA私钥 命令:openssl genrsa -des3 -out server.key 1024 说明:生成rsa私钥,des3算法,1024强度, ...

  6. RedHat 6.6下安装nginx,配置HTTPS

    1.安装依赖包 yum -y install pcre-devel openssl-devel zlib-devel 2.下载nginx安装包到服务器上,当前使用版本nginx-1.15.5.tar. ...

  7. nginx 配置https并自签名证书

    2016-10-28 转载请注明出处:http://daodaoliang.com/ 作者: daodaoliang 版本: V1.0.1 邮箱: daodaoliang@yeah.net 参考链接: ...

  8. [记录]NGINX配置HTTPS性能优化方案一则

    NGINX配置HTTPS性能优化方案一则: 1)HSTS的合理使用 2)会话恢复的合理使用 3)Ocsp stapling的合理使用 4)TLS协议的合理配置 5)False Start的合理使用 6 ...

  9. 购买https证书以及nginx配置https

    文章来源 运维公会:购买https证书以及nginx配置https 1.https的作用 https的全名是安全超文本传输协议,是在http的基础上增加了ssl加密协议.在信息传输的过程中,信息有可能 ...

随机推荐

  1. ArrayList 和linkedList 插入比较

    从学Java开始, 就一直大脑记着  arrayList 底层是数组 ,查询快, 插入慢, 有移动的动作.linkedList 底层链表, 插入快 查询慢,今天写了例子跑了跑, 果然. public ...

  2. docker上安装ActiveMQ

    1.查看是否已经存在镜像 docker images 2.搜索镜像 docker search activemq 3.拉取镜像 docker pull webcenter/activemq 4.构建容 ...

  3. 记因为电脑名更改而导致sql server一直连接失败

    安装的是sql server2016.原先一直用的好好的,直到有一天觉得电脑名称,嗯要改下.改完后,嗯,就忘了. 然后打开sql server,连接失败.一开始以为是sql server配置管理器中的 ...

  4. cmd以管理员打开

  5. (转)Nginx+Php-fpm运行原理详解

    一.代理与反向代理 现实生活中的例子 1.正向代理:访问google.com 如上图,因为google被墙,我们需要vpn翻墙才能访问google.com. vpn对于“我们”来说,是可以感知到的(我 ...

  6. 「题解」:[组合数学]:Perm 排列计数

    题干: Description称一个1,2,…,N的排列P1,P2…,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,…N的排列中有多少是Magic的,答 ...

  7. JAVA 垃圾回收读书笔记

    对象已死 在JAVA代码运行中,会不停的创建对象,因为内存空间不是无限的,Java虚拟机必须不停的回收无用的数据空间.那么虚拟机是怎么判断对象空间是需要被回收的呢,也就是怎么样的数据算是垃圾数据呢? ...

  8. Android之divider分割线的使用

    1.divider分割线 三种实现方式:(1)添加一个view,(2)通过shape实现,(3)通过设置图片实现 相关属性:设置分割线,分割线位置(none(无),begining(开始),end(结 ...

  9. Docker系列(十):Kubernetes集群入门

    kubenetes安装 官网:https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/getting-started- guide ...

  10. tab切换 -- vue

    效果: html: // 按钮<div class="orderTab clearfix" @click="toggle()"> <div c ...