广告位联系
返回顶部
分享到

Nginx服务器配置https安全协议的实现

nginx 来源:互联网 作者:佚名 发布时间:2024-09-21 22:37:37 人浏览
摘要

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

一、简介

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

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

二、https和http区别

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

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

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

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

三、https协议优缺点

优点

  • 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
  • HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性;
  • HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

缺点

  • HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
  • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
  • SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用;
  • SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗;
  • HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的是,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

四、nginx中配置https

0. nginx配置HTTPS前置条件

  • 服务器上已经安装nginx服务,已经具备http访问;
  • nginx服务器是否已经安装ssl模块得支持;
  • 是否已经拥有ssl证书,如果没有可以去阿里云或者腾讯云免费申请;

1. 证书申请

证书申请前往阿里云SSL证书申请,选择免费证书申请即可

alt

alt

刷新页面

alt

alt

alt

alt

2. nginx SSL模块是否支持

查看nginx是否安装http_ssl_module模块

1

./nginx -V

如果看到我上图标记得 configure arguments: --with-http_ssl_module, 则已安装(可以直接跳过nginx安装ssl支持步骤,进入 nginx.conf 配置)。

3. nginx安装

3.1 nginx官网地址

下载地址

这里下载nginx-1.18.0稳定版tar.gz

alt

3.2 下载tar包到服务器目录

1

2

cd /home/somnus

wget http://nginx.org/download/nginx-1.18.0.tar.gz

3.3 解压安装包

1

tar -zxvf nginx-1.18.0.tar.gz

3.4 配置ssl模块

1

2

cd nginx-1.18.0

./configure --prefix=/usr/local/nginx --with-http_ssl_module

3.5 接下来执行命令编译

使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。用新的 nginx 文件覆盖当前的 nginx 文件。

3.6 命令拷贝复制

1

cp ./objs/nginx /usr/local/nginx/sbin/

3.7 再次查看安装的模块(configure arguments: --with-http_ssl_module说明ssl模块已安装)。

1

2

3

4

./nginx -V

nginx version: nginx/1.18.0

configure arguments: –with-http_ssl_module

4. ssl 证书部署

下载申请好的 ssl 证书文件压缩包到本地并解压(这里是用的 pem 与 key 文件,文件名可以更改)。 在 nginx 目录新建 cert 文件夹存放证书文件。

1

2

cd /usr/local/nginx

mkdir cert

将我们申请得这两个文件上传至服务器的 cert 目录里。

5. 解压缩证书

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

1

2

3

www.javaqf.com.key

 

www.javaqf.com.pem

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

编辑 /usr/local/nginx/conf/nginx.conf 配置文件:

配置 https server。 注释掉之前的 http server 配置,新增 https server:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#以下属性中,以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;

    }

}

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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/

8. 查看端口使用

1

netstat -lntp

执行看到以下结果就说明我们成功了

1

2

3

4

5

6

[root@centos7 certs]#  netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3322/nginx: master 

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2310/sshd                 

tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      3322/nginx: master 

五、nginx中其他配置https

1. 配置非域名访问报404

1

2

3

4

5

6

7

server {

...

    if ($host != '域名') {

        return 404;

    }

...

}

2. 配置企微Others2域名验证

1

2

3

4

5

6

7

server {

...

    location /企微文件名称.txt {

        alias 企微文件放置文件/企微文件名称.txt;

    }

...

}

3.将 http 重定向 https

1

2

3

4

5

6

7

server {

    listen 80;

    server_name somnus.test.com;

    #将请求转成https

    rewrite ^(.*)$ https://$host$1 permanent;

    ...

}


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Nginx限流和流量控制的实现介绍
    Nginx 提供了强大的流量控制功能。限制客户端在特定时间段内的请求次数,以保护服务器资源,防止因过载而导致的性能下降甚至服务不可
  • Nginx服务器配置https安全协议的实现

    Nginx服务器配置https安全协议的实现
    一、简介 HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地
  • 深入理解Nginx中的sites-enabled目录
    Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于网站和应用的部署中。在 Nginx 的配置管理中,sites-enabled目录扮演了一个重要角
  • Nginx下将http改为https的操作教程

    Nginx下将http改为https的操作教程
    将服务从HTTP变为HTTPS,需要进行SSL证书的配置。需要完成一下步骤: 获取SSL证书 安装SSL证书 配置Nginx支持HTTPS 重启Nginx HTTP到HTTPS的重定向(
  • Nginx配置中root和alias的区别及说明

    Nginx配置中root和alias的区别及说明
    Nginx配置中root和alias区别 root和alias都可以定义在location模块中,都是用来指定请求资源的真实路径,比如: 1 2 3 location /i/ { root /data/w3; } 请求
  • Nginx的跨域、alias、优化方式

    Nginx的跨域、alias、优化方式
    root与alias 1 2 3 4 location / { alias /app/html/; index index.html index.htm; } 两者区别: alias是目录别名,root是最上层目录的定义 alias后必须用/结束,不
  • Nginx负载均衡中的Memcached缓存模块

    Nginx负载均衡中的Memcached缓存模块
    Nginx 的 ngx_http_memcached_module 模块本身并没有提供缓存功能,它只是一个将用户请求转发到 Memcached 服务器的代理模块。 在以 Memcached 服务器为
  • Nginx location(正则)使用介绍
    1、nginx location location 指令的作用是根据用户请求的URI来执行不同的应用。 location使用的语法 1 2 3 location [=|~|~*|^~] uri { } 解释: location [=||*
  • Nginx之location匹配和Rewrite重写跳转方式

    Nginx之location匹配和Rewrite重写跳转方式
    一、常用的Nginx 正则表达式 ^ :匹配输入字符串的起始位置 $ :匹配输入字符串的结束位置 * :匹配前面的字符零次或多次。如ol*能匹配o及
  • Nginx负载均衡实现上游服务健康检查功能

    Nginx负载均衡实现上游服务健康检查功能
    Nginx 负载均衡实现上游服务健康检查 Author:Arsen Date:2024/06/20 前言 如果你使用云负载均衡(如阿里云 CLB),我们可以通过配置健康检查来
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计