一. 网络安全之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. WPF 字体描边的实现方式

    原文:WPF 字体描边的实现方式   <local:TextPath x:Name="PathEdge" Fill="Red" Stroke=" ...

  2. 2019-8-30-PowerShell-通过-WMI-获取系统安装的驱动

    title author date CreateTime categories PowerShell 通过 WMI 获取系统安装的驱动 lindexi 2019-08-30 08:58:39 +080 ...

  3. T2980 LR棋盘【Dp+空间/时间优化】

    Online Judge:未知 Label:Dp+滚动+前缀和优化 题目描述 有一个长度为1*n的棋盘,有一些棋子在上面,标记为L和R. 每次操作可以把标记为L的棋子,向左移动一格,把标记为R的棋子, ...

  4. Google 打算用 QUIC 协议替代 TCP/UDP

    有句话叫做一流企业定标准.二流企业做品牌.三流企业卖技术.四流企业做产品.Google 似乎在冲着一流企业的目标迈进.去年,Google 已经从以 SPDY 为基础的 HTTP 协议 16年 来的首个 ...

  5. LUOGU P2764 最小路径覆盖问题 (最小路径点覆盖)

    解题思路 有向图最小路径点覆盖问题,有这样的结论就是有向图最小路径点覆盖等于n-拆点二分图中最大匹配.具体怎么证明不太知道..输出方案时找到所有左部未匹配的点一直走$match​$就行了. #incl ...

  6. poj3294Life Forms

    传送门 我真是一个垃圾 模板题都不会做 模板题还要别人教 细节写法还要别人教 别人一分钟AC,教我算法还教我写法,最后写出来的别人算法还比我优秀一百倍 数据结构把脑子学傻了,看到题就想怎么用数据结构, ...

  7. Codeforces Round #599 (Div. 2)的简单题题解

    难题不会啊…… 我感觉写这个的原因就是因为……无聊要给大家翻译题面 A. Maximum Square 简单题意: 有$n$条长为$a_i$,宽为1的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...

  8. js页面的弹框怎么关闭啊

    1.单纯的关闭window.opener.location.reload(); //刷新父窗口中的网页window.close();//关闭当前窗窗口2.提交后关闭 function save(){d ...

  9. iOS之CAScrollLayer属性简介和使用

    1.CAScrollLayer的简介 CAScrollLayer用于显示一个滑动图层的一部分,可以确定滑动方向和可视区域面积,限制不滑出区域外!相关属性如下:其中 /* Scroll the cont ...

  10. react antd样式按需加载配置以及与css modules模块化的冲突问题

    通过create-react-app脚手架生成一个项目 然后运行npm run eject 把webpack的一些配置从react-scripts模块弹射出来, 方便自己手工增减,暴露出来的配置文件在 ...