[Day3] Nginx配置Https
一. 网络安全之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
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的更多相关文章
- Nginx配置Https
1.申请证书: https://console.qcloud.com/ssl?utm_source=yingyongbao&utm_medium=ssl&utm_campaign=qc ...
- 【转】Linux下nginx配置https协议访问的方法
一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...
- nginx配置https双向验证(ca机构证书+自签证书)
nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...
- Nginx 配置https 服务
一.HTTPS 服务 为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 HTTPS加密校验 ...
- nginx配置https转发到tomcat(使用自签名的证书)
一.使用openSSL生成自签名的证书 1.生成RSA私钥 命令:openssl genrsa -des3 -out server.key 1024 说明:生成rsa私钥,des3算法,1024强度, ...
- RedHat 6.6下安装nginx,配置HTTPS
1.安装依赖包 yum -y install pcre-devel openssl-devel zlib-devel 2.下载nginx安装包到服务器上,当前使用版本nginx-1.15.5.tar. ...
- nginx 配置https并自签名证书
2016-10-28 转载请注明出处:http://daodaoliang.com/ 作者: daodaoliang 版本: V1.0.1 邮箱: daodaoliang@yeah.net 参考链接: ...
- [记录]NGINX配置HTTPS性能优化方案一则
NGINX配置HTTPS性能优化方案一则: 1)HSTS的合理使用 2)会话恢复的合理使用 3)Ocsp stapling的合理使用 4)TLS协议的合理配置 5)False Start的合理使用 6 ...
- 购买https证书以及nginx配置https
文章来源 运维公会:购买https证书以及nginx配置https 1.https的作用 https的全名是安全超文本传输协议,是在http的基础上增加了ssl加密协议.在信息传输的过程中,信息有可能 ...
随机推荐
- 阿里云CentOs7上安装Mysql
前提:虽然yum源上有mysql,但是好像没有mysql-server,所以我们还是选择自己从官网上下载安装 一.新建文件夹,然后下载解压 cd /usr/ #新建mysql文件夹 mkdir mys ...
- Python中%r和%s的详解及区别_python_脚本之家
Python中%r和%s的详解及区别_python_脚本之家 https://www.jb51.net/article/108589.htm
- JavaScript开发人员必知的10个关键习惯
还在一味没有目的的编写JavaScript代码吗?那么你就OUT了!让我们一起来看看小编为大家搜罗的JavaScript开发人员应该具备的十大关键习惯吧! 随着新技术的不断发展,JavaScript已 ...
- JVM实战
一.内存溢出 虚拟机栈和本地方法栈溢出:-Xss256k package com.jedis; import java.util.LinkedList; import java.util.List; ...
- 测试环境添加spark parcel 2.1步骤
1.先到http://archive.cloudera.com/spark2/parcels/2.1.0.cloudera1/ 下载需要的文件比如我linux版本需要是6的 hadoop6需要下载这些 ...
- Python全栈开发:Ajax全套
概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...
- MySQL数据库CRUD命令用法
数据库CRUD操作即添加(Create).读取(Read).更新(Update)和删除(Delete). 1. 添加操作也称插入操作,使用Insert语句,Insert语句可以用于几种情况: 插入完整 ...
- LoadRunner穿过防火墙运行Vuser和进行监控
LoadRunner穿过防火墙运行Vuser和进行监控 LoadRunner穿过防火墙进行测试,总结下来是2个方法:1. 在controller和Vuser的LAN中的防火墙都打开54345端口即 ...
- Android 学习 (持续添加与更新)
N.GitHub 最受欢迎的开源项目 http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects 六.and ...
- WCF进阶:扩展bindingElementExtensions支持对称加密传输
前面两篇文章WCF进阶:将编码后的字节流压缩传输和WCF 进阶: 对称加密传输都是实现了自定义编码,那两个例子中托管服务或者客户端调用都采用的代码实现,WCF更友好的方式是在app.config或 ...