ITPub博客

首页 > 数据库 > 数据库开发技术 > Nginx服务器配置https安全协议,看这篇文章就够了

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

原创 数据库开发技术 作者:Finally_m 时间:2022-11-08 08:03:00 0 删除 编辑
点击上方蓝字关注我们

一. 简介

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服务器证书压缩包文件。解压后我们将会获得以下文件:

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 
    root html;
    index index.html index.htm;
    
    ssl_certificate /usr/local/nginx/ca/;  
    ssl_certificate_key /usr/local/nginx/ca/; 
    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/

现在你知道如何在nginx服务器中配置https协议了吗?如果你还有其他问题,可以在评论区给我留言哦。

关注Java架构栈,干货天天都不断哦!

扫码了解获取java相关课程资料!


点击【阅读原文】,零基础免费学Java!

原文作者:Java架构栈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-04-13

  • 博文量
    573
  • 访问量
    243864