当前位置:   article > 正文

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

listen 443 ssl;

一. 简介

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

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

二. 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证书(本教程是通过对接 阿里云平台免费获得)。

2.下载证书到本地

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

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

该操作会将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

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

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

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

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

  1. server {
  2.     listen 443 ssl;
  3.     server_name www.javaqf.com;
  4.     root html;
  5.     index index.html index.htm;
  6.     
  7.     ssl_certificate /usr/local/nginx/ca/www.javaqf.com.pem;  
  8.     ssl_certificate_key /usr/local/nginx/ca/www.javaqf.com.key
  9.     ssl_session_timeout 5m;
  10.     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  11.     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  12.     ssl_prefer_server_ciphers on;
  13.     
  14.     location / {
  15.         root   /usr/share/nginx/html;
  16.         index index.html index.htm;
  17.     }
  18. }

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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/103590?site
推荐阅读
相关标签
  

闽ICP备14008679号