Nginx服务器如何配置https安全协议?

AI 概述
https 和 http 区别https 协议优缺点优点缺点nginx 中配置 https0. nginx 配置 HTTPS 前置条件1. 证书申请2. nginx SSL 模块是否支持3. nginx 安装4. ssl 证书部署5. 解压缩证书6. 在 Nginx 服务器上安装证书7. 接入流程(最终个人本地配置示例)8. 查看端口使用五、nginx 中其他配置 https1. 配置非域...
目录
文章目录隐藏
  1. https 和 http 区别
  2. https 协议优缺点
  3. nginx 中配置 https
  4. 五、nginx 中其他配置 https

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 证书申请,选择免费证书申请即可。

阿里云 SSL 证书申请

阿里云 SSL 证书申请

刷新页面

刷新页面

阿里云 SSL 证书申请

阿里云 SSL 证书申请

阿里云 SSL 证书申请

2. nginx SSL 模块是否支持

查看 nginx 是否安装 http_ssl_module 模块

./nginx -V

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

3. nginx 安装

3.1 nginx 官网地址

下载地址

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

3.2 下载 tar 包到服务器目录

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

3.3 解压安装包

tar -zxvf nginx-1.18.0.tar.gz

3.4 配置 ssl 模块

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 命令拷贝复制

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

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

./nginx -V
nginx version: nginx/1.18.0
…
configure arguments: –with-http_ssl_module

4. ssl 证书部署

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

cd /usr/local/nginx
mkdir cert

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

5. 解压缩证书

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

www.xxx.com.key

www.xxx.com.pem

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

编辑 /usr/local/nginx/conf/nginx.conf 配置文件,配置 https server。

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

#以下属性中,以 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 配置文件,我的配置如下所示:

server {
    listen 443 ssl;
    server_name www.mybj123.com;
    root html;
    index index.html index.htm;
    
    ssl_certificate /usr/local/nginx/ca/www.mybj123.com.pem;  
    ssl_certificate_key /usr/local/nginx/ca/www.mybj123.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.mybj123.com/

8. 查看端口使用

netstat -lntp

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

[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

server {
...
	if ($host != '域名') {
    	return 404;
    }
...
}

2. 配置企微 Others2 域名验证

server {
...
	location /企微文件名称.txt {
    	alias 企微文件放置文件/企微文件名称.txt;
    }
...
}

3.将 http 重定向 https

server {
    listen 80;
    server_name somnus.test.com;
    #将请求转成 https
    rewrite ^(.*)$ https://$host$1 permanent;
    ...
}

以上就是关于 Nginx 服务器配置 https 安全协议的实现的全部方法,更多相关 Nginx 配置 https 内容请搜索码云笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持码云笔记!

以上关于Nginx服务器如何配置https安全协议?的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Nginx服务器如何配置https安全协议?

发表回复