Linux NginxHTTPS——HTTPS介绍、加密算法、SSL协议、HTTP风险、Nginx HTTPS部署(安全的网站部署)

news/2024/5/20 15:47:44/文章来源:https://blog.csdn.net/weixin_55985097/article/details/116722964

HTTPS介绍
HTTPS(HyperText Transfer Protocol over Secure Socket Layer),Google 为了保证数据安全很早就开始启用了。 近些年互联网巨头,开始大力推行 HTTPS, 国内外的大型互联网公司基本也都已经启用了全站 HTTPS。

1、加密算法
对称加密【加密和解密都是使用的同一个密钥】
A要给B发送数据
1、A做一个对称密钥
2、使用密钥给文件加密
3、发送加密以后的文件和钥匙
4、B拿钥匙解密

非对称加密【公钥加密,私钥解密】
A要给B发送数据
1、B做一对非对称的密钥(公钥、私钥)
2、发送公钥给A
3、A拿公钥对数据进行加密
4、发送加密后的数据给B
5、B拿私钥解密

哈希算法
将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多。
如:MD5、SHA-1、SHA-2、SHA-256 等

数字签名
签名就是在信息的后面再加上一段内容(信息经过hash后的值),可以证明信息没有被修改过。hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。

2、HTTPS 协议介绍
HTTP 协议(Hyper Text Transfer Protocol,超文本传输协议),是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。

HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

图片: https://uploader.shimo.im/f/j5iXs7UqxQXdMoDX.png

如图HTTPS 相比 HTTP 多了一层 SSL/TLS
SSL/TLS :SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层为数据通讯进行加密提供安全支持。

SSL协议可分为两层:
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。相当于连接
SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 相当于通信

SSL协议提供的服务主要有:
ssl:身份认证和数据加密,保证数据完整性
1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。
3、HTTPS 原理

  • HTTP 访问过程

在这里插入图片描述

如上图所示,HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下:
图片: https://uploader.shimo.im/f/ckNWv2DBnVh57m8n.png

客户端发出的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉。

  • HTTP 传输面临的风险有:

窃听风险:黑客可以获知通信内容。
篡改风险:黑客可以修改通信内容。
冒充风险:黑客可以冒充他人身份参与通信。

SSL 证书(申购)【既可以安全的获取公钥,又能防止黑客冒充】
证书:.crt, .pem
私钥:.key
证书请求文件:.csr

在这里插入图片描述

如图,在第 ② 步时服务器发送了一个SSL证书给客户端,SSL 证书中包含的具体内容有:
(1)证书的发布机构(CA认证中心)
(2)证书的有效期
(3)公钥
(4)证书所有者
(5)签名【签名就可以理解为是钞票里面的一个防伪标签】

客户端在接受到服务端发来的SSL证书时,会对证书的真伪进行校验。

  • 以浏览器为例:

(1)首先浏览器读取证书中的证书所有者、有效期等信息进行校验
(2)浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发
(3)如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。
(4)如果找到,那么浏览器就会从操作系统中取出颁发者CA 的公钥,然后对服务器发来的证书里面的签名进行解密
(5)浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比
(6)对比结果一致,则证明服务器发来的证书合法,没有被冒充
(7)此时浏览器就可以读取证书中的公钥,用于后续加密了
(8)client与web协商对称加密算法,client生成一个对称加密密钥并使用web公钥加密,发送给web服务器,web服务器使用web私钥解密
(9)使用对称加密密钥传输数据,并校验数据的完整性

所以相比HTTP,HTTPS 传输更加安全
(1) 所有信息都是加密传播,黑客无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。

3、HTTPS 总结
优点:相比 HTTP 协议,HTTPS 协议增加了很多握手、加密解密等流程,虽然过程很复杂,但其可以保证数据传输的安全。

缺点:
SSL 证书费用很高,以及其在服务器上的部署、更新维护非常繁琐
HTTPS 降低用户访问速度(多次握手)
网站改用HTTPS 以后,由HTTP 跳转到 HTTPS 的方式增加了用户访问耗时(多数网站采用302跳转)
HTTPS 涉及到的安全算法会消耗 CPU 资源,需要增加大量机器(https访问过程需要加解密)

  • Nginx HTTPS 部署实战

1、申请证书与认证
要搭建https服务首先需有SSL证书,证书通常是在第三方申请,在阿里云的安全服务中有SSL证书这一项,可以在里面申请免费的证书;
也可以在自己电脑中生成,虽然也能完成加密,但是浏览器是不认可的,因此最好还是去第三方申请

  • 证书申请

购买域名服务厂商提供免费的证书(如阿里云腾讯云等),用来做测试是非常不错的选择,申请地址进入域名解析页点击SSL选项。【免费型的证书隐藏的比较深,仔细找找都可以找到】

选择之后,一直点击下一步,便可购买完成,免费购买证书之后需要回到证书控制台,在控制台有一个补全信息的链接地址,需要通过此地址补充信息。

  • 域名验证

补全个人信息之后,还需要给阿里云验证当前域名是属于本人的,验证方式有两种,第一种是通过dns解析认证,第二种是通过上传验证文件认证,这里采用的是验证文件认证,首先需要下载文件。

在下载验证文件完成之后,需要把文件放到服务器中去:

#scp ~/Downloads/fileauth.txt  root@192.168.43.34:~/

将验证文件复制到服务器之后,还需要将验证文件放到站点对应目录,命令:

# cd /usr/share/nginx/html/
#mkdir -p /website/.well-known/pki-validation  &&  cp  fileauth.txt  /website/.well-known/pki-validation/
# cd && vim /etc/nginx/nginx.conf
server {listen       80;server_name  localhost;location / {root /usr/share/nginx/html/website;}
  • 验证

1、手动验证
手动验证的目的是首先确保文件位置放置是否正确,可以通过访问站点的url是否成功进行判断,比如可以访问如下URL,如果返回如果页面能够正常打开,并且可以看到某些值,则代表配置成功。

2、通过阿里云来验证
在确保文件放置正确之后,关键的是能让阿里云能访问到,阿里云提供了一个检查配置的功能,在下载验证文件页面,有一个检测配置的链接,单击之后便可进行检查,如下图。

当点击 检查配置 之后,如果阿里云能够正常访问,则会在左侧给出提示,现在可以返回证书列表,在列表中可以看到当前状态为审核中。
审核因为不需要人为干预,所以很快就能下发证书,下发证书的时间大约是1-3分钟左右。

  • 证书下载与配置

1、证书下载
证书签发之后,可以在列表中可以看到状态栏中为 已签发 ,同时操作栏可以下载以及查看详情等。

点击下载后,会跳转到下载详情页面,在下载详情页可以选择自己相对应的web服务,比如使用nginx,当选择nginx之后,云服务厂商会提示如何配置,下载nginx配置文件。

下载配置文件之后,需要将其解压,解压之后可以看见里面包含了两个证书文件
xxx.key
xxx.pem
接着需要把这两个证书文件给发送//上传到服务器当中去,首先需要在服务器创建对应的文件夹,参考命令:

# cd /etc/nginx/ && mkdir cert

在服务器创建完成对应文件夹之后,将证书文件复制到服务器中

2、证书配置
证书复制完成之后,可以对nginx配置文件进行更改,使用vim命令编辑nginx配置文件,参考命令如下:

# cd /etc/nginx/conf.d/
# cp default.conf default.conf.bak
# mv default.conf nginx_ssl.conf
# vim nginx_ssl.conf
# cat /etc/nginx/conf.d/nginx_ssl.conf 
server {listen 443 ssl;server_name www.testpm.cn;access_log  /var/log/nginx/https_access.log  main;#ssl on;ssl_certificate   /etc/nginx/cert/2447549_www.testpm.cn.pem;ssl_certificate_key  /etc/nginx/cert/2447549_www.testpm.cn.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;ssl_prefer_server_ciphers on;
​location / {root  /usr/share/nginx/html;index index.html index.htm;}
}
  • 重启Nginx

修改配置文件之后,需要测试nginx配置文件是否正确

# nginx -t 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# nginx -s reload

如果看到浏览器,展示安全,并且显示绿色就说明大功告成了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_769447.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一章——Web网站服务(一)(应用—linux高级管理)

三期总目录链接 目录 1、Apache 的起源 2、准备工作centOS7机器一台 3、把httpd添加为系统服务 4、httpd服务和 dns服务结合使用 域名访问网站 就www.aaa.com为例 常用的全局配置参数 常用的全局配置参数(续) Require配置项的常见语法 1、Apach…

二章——Web 网站服务(二)(应用——linux高级管理)

三期总目录链接 目录 一、基本理论 (一)、客户机地址限制 (二)、用户授权限制 二、实验要求 1、默认情况 2、只允许客户端192.168.1.200访问网站应该如何修改配置文件并验证 3、进行用户授权配置,允许aaa 和bo…

二章——Web网站服务(二)2.2(应用——linux高级管理)

三期总目录链接 目录 一、构建虚拟Web主机 案例1: 构建www.a1.com 和www.a1.com 这种基于域名的虚拟主机 案例2:构建基于地址的虚拟主机 (192.168.1.2 和 192.168.1.12) 案例3: 添加基于端口的虚拟主机 &#xf…

四章——Nginx网站服务(应用——linux防护与群集)

三期总目录链接 目录 一、Nginx服务 1、安装及运行控制 2、配置文件nginx.conf 2.1全局配置 解释: 2.2 I/O事件配置 解释: 2.3 HTTP配置 解释: 3、访问状态统计及虚拟主机应用 二、LNMP架构及应用部署 1、搭建LNMP网站平台 1.1…

rust全息要啥才能做_网站优化要怎么做才能排名靠前-乐云SEO

对于一个网站来说,网站优化是重要的,只有在搜索引擎中的关键词排名靠前才能获得更多的点击量。一个没有用户点击量的网站,即使它是完美的,是徒劳的。那么,我们如何在百度或其他搜索引擎的主页上获得网站的关键词排名呢…

实验楼网站mysql_进阶篇 - MySQL 常用查询

实验9 进阶篇-MySQL常用查询一、简介1. 内容:通过一个经销商数据库实例学习并实践多种在数据库中查找记录的方法。2. 知识点:表查询操作。二、步骤1. 启动并连接MySQL。创建切换数据库。创建表并插入数据。mysql> CREATE TABLE shop (-> article I…

java 爬虫 登陆_Java 爬虫遇到需要登录的网站,该怎么办?

这是 Java 网络爬虫系列博文的第二篇,在上一篇 Java 网络爬虫,就是这么的简单 中,我们简单的学习了一下如何利用 Java 进行网络爬虫。在这一篇中我们将简单的聊一聊在网络爬虫时,遇到需要登录的网站,我们该怎么办&…

php行业八卦,Phpwind肖睿哲:与网站主合作信任最重要

(图为:Phpwind副总裁肖睿哲)【TechWeb消息】12月4日下午消息,Phpwind副总裁肖睿哲在“2010年中国地方与行业网站高峰论坛”上接受TechWeb专访时表示,与新浪微博合作产生利益之后,网站主将会与新浪微博七三分成,“Phpwi…

java请求爬取https网站报错javax.net.ssl.SSLHandshakeException的解决办法

前言 在爬取https网站的时候,今天遇到了一个之前没有见过的异常javax.net.ssl.SSLHandshakeException,具体细节请看如图 2020-06-01 23:18:17.032 DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request javax.ne…

不同网站不同网卡_不同时代网站设计制作的技巧

对于大多数网页设计师来说,基于特定的目标受众来计划一个网站设计项目是显而易见的。它可能是为那些喜欢苏打水或购买电子游戏或对运动鞋有亲和力的人。但是另一个需要考虑的问题经常被忽略——为不同的时代的用户设计。年龄会影响用户如何使用网站、应用程序和移动…

win7网站服务器错误怎么解决方法,win7系统网页提示network error怎么办|win7 network error的解决方法...

‍‍有很多win7旗舰版用户在访问网页的时候出现无法访问的情况,并提示network error,我们遇到在win7系统网页提示network error怎么办呢?会出现network error很有可能是网络参数发现错误或接触DNS服务器发生错误导致二级网页打不开&#xff0…

做网站用UTF-8编码还是GB2312编码?

经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312。 ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别&…

MOSS 2007应用日记(3)——如何创建/删除部门网站(子网站)

在顶级网站中,我们可以为各个部门创建自己的网站1创建部门网站(子网站)登录顶级网站,点击页面右上角的“网站操作”,选择“创建网站”输入网站的标题和说明,这里创建一个“行政部”网站在“网站网址”中输入…

用linux部署一个网站,Linux网站部署——从零到一部署一个本身的电商网站

上一篇关于部署论坛的网站已经发出,此次咱们来部署一下电商网站,前期的准备工做请参考上篇文章:https://editor.csdn.net/md/?articleId114901490php我在这里直接借用了一个云服务器。若是仍是本身服务器的同窗能够直接使用咱们的第一条命令…

服务器安装网站流程图,服务器操作系统的安装流程图

服务器操作系统的安装流程图 内容精选换一换外部镜像文件在从原平台导出前,没有按照“Windows操作系统的镜像文件限制”的要求完成初始化操作,推荐您使用弹性云服务器完成相关配置。流程如图1所示。云服务器的正常运行依赖于XEN Guest OS driver(PV driv…

证书 手机打不开页面_教师资格证报名入口网站打不开怎么办|教师资格证报名浏览器是哪个...

为了帮助考生解决“教师资格证报名入口网站打不开怎么办|教师资格证报名浏览器是哪个”相关的问题,中公教师网通过相关资料这些问题进行了整理,具体解决办法如下:相关推荐>>>2021上半年教师资格证报名入口|报名时间-中小学教师资格考…

Flash与组件:国外收费组件网站

http://www.flashcomponents.net/index.html 今天无意中光顾了这个国外flash组件网站,虽然基本上上都是收费但是可给我们提供一些灵感,同时也让我们扩展视野是个不错的平台。国内也是非常少见,有这样的情况。

域名怎么进行html校验,百度站长平台如何进行网站验证及常见问题

原标题:百度站长平台如何进行网站验证及常见问题为什么我们把网站验证到百度搜索资源平台百度搜索资源平台推荐站长添加主站(您网站的链接也许会使用www 和非 www 两种网址,建议添加用户能够真实访问到的网址),添加并验证后,可证明…

网页中直接调用计算机程序,深入探讨 网站想要使用你计算机上的程序打开Web内容...

深入探讨 网站想要使用你计算机上的程序打开Web内容gOxiA 因为工作需要最近在做与桌面虚拟化相关的技术内容,期间就遇到了“网站想要使用你计算机上的程序打开 Web 内容”的问题。具体是在用户安装 VDA 客户端后,通过 IE 访问 VDI 门户时会弹出这个提示&…

怎样查看网站服务器时间,如何查看docker容器的时间_网站服务器运行维护

如何把宿主机的文件拷贝到docker中_网站服务器运行维护把宿主机的文件拷贝到docker中的方法:在宿主机里执行“docker cp要拷贝的文件路径容器名:要拷贝到容器里面对应的路径”命令即可。查看docker容器时间的方法:进入到容器里执行date命令即…