Nginx服务器配置https安全协议,看这篇文章就够了

一. 简介

HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS是以网络安全为目标的HTTP通道,简单地讲就是HTTP的安全版,即HTTP中加入了SSL层,HTTPS的安全基础就是SSL,因此加密的详细内容就需要SSL。如我们经常访问的百度:

Nginx服务器配置https安全协议,看这篇文章就够了插图

Nginx服务器配置https安全协议,看这篇文章就够了插图1

二. https和http区别

HTTP与HTTPS的区别

  1. https协议需要到ca申请证书,一般免费证书较少,大多需要一定的费用;

  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议;

  3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;

  4. http的连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的,可进行加密传输、身份认证的网络协议,比http协议安全。

三. https协议优缺点

1.优点

  1. 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

  2. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性;

  3. HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

2.缺点

  1. HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

  2. HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

  3. SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用;

  4. SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗;

  5. HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的是,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

四. nginx中配置https

1. 准备证书

要想正式使用https协议,我们需要先行购买CA证书(本教程是通过对接 阿里云平台免费获得)。

Nginx服务器配置https安全协议,看这篇文章就够了插图2

2.下载证书到本地

然后我们登录数字证书管理服务控制台,在左侧导航栏单击SSL证书,如下图所示:

Nginx服务器配置https安全协议,看这篇文章就够了插图3

接着单击目标证书操作列的下载按钮,在证书下载面板,单击Nginx服务器对应的操作列下载按钮。

Nginx服务器配置https安全协议,看这篇文章就够了插图4

该操作会将Nginx服务器的证书压缩包下载到本地,并保存在浏览器的默认下载位置。

3.解压缩证书

然后我们打开浏览器的默认下载位置,解压已下载的Nginx服务器证书压缩包文件。解压后我们将会获得以下文件:

www.javaqf.com.key

www.javaqf.com.pem

4. 在Nginx服务器上安装证书

首先我们需要登录Nginx服务器。执行以下命令,在Nginx安装目录(默认为/usr/local/nginx/conf)下创建一个用于存放证书的目录:

vim /usr/local/nginx/conf/conf.d/default.conf

文件中的配置内容如下所示:

#以下属性中,以ssl开头的属性表示与证书配置有关。 server { listen 443 ssl; #配置HTTPS的默认访问端口为443。 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。 server_name yourdomain; root html; index index.html index.htm; ssl_certificate cert/cert-file-name.pem; ssl_certificate_key cert/cert-file-name.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #表示使用的加密套件的类型。 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。 ssl_prefer_server_ciphers on; location / { root html; #Web网站程序存放目录。 index index.html index.htm; } }

5. 接入流程(最终个人本地配置示例)

这里我们需要将协议更改为HTTPS配置文件,我的配置如下所示:

server { listen 443 ssl; server_name www.javaqf.com; root html; index index.html index.htm; ssl_certificate /usr/local/nginx/ca/www.javaqf.com.pem; ssl_certificate_key /usr/local/nginx/ca/www.javaqf.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } }

最后我们就可以在浏览器中通过https协议进行访问了,比如:https://www.你的域名.com/

原文链接:https://blog.csdn.net/finally_vince/article/details/127884546

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享