Nginx HTTPS 实现、自定义 Server 名称及升级 OpenSSL(一)|学习笔记

简介: 快速学习 Nginx HTTPS 实现、自定义 Server 名称及升级 OpenSSL

开发者学堂课程【Nginx 企业级 Web 服务实战:Nginx HTTPS 实现、自定义 Server 名称及升级 OpenSSL】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/649/detail/10761


Nginx HTTPS 实现、自定义 Server 名称及升级 OpenSSL(一)

内容介绍:

一、https 功能

二、ssI 配置参数

三、自签名证书

四、Nginx 证书配置

五、实现多域名 HTTPS

六、关于 favicon.ico

七、安全选项


一、https 功能

Web 网站的登录页面都是使用 https 加密传输的,加密数据以保障数据的安全,HTTPS 能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用 HTTPS 协议,HTTPS 其实是有两部分组成:HTTP+ SSL/TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。

服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。

具体步骤如下图:

image.png

可以用浏览器访问证书的地址。

https 实现过程如下:

1.客户端发起 HTTPS 请求:

客户端访问某个 web 端的 https 地址,一般都是443落口

2.服务端的配置:

采用 https 协议的服务器必须要有一套证书,可以通过一些组织申请,也可以自己制作,目前国内很多网站都自己做的,当你访问一个网站的时候提示证书不可信任就表示证书是自己做的,证书就是一个公钥和私钥匙,就像一把锁和钥匙,正常情况下只有你的钥匙可以打开你的锁,你可以把这个送给别人让他锁住一个箱子,里面放满了钱或秘密,别人不知道里面放了什么而且别人也打不开,只有你的钥匙是可以打开的。

3.传送证书:

服务端给客户端传递证书,其实就是公钥,里面包含了很多信息,例如证书得到颁发机构、过期时间等等。

4.客户端解析证书:

这部分工作是有客户端完成的,首先回验证公钥的有效性,比如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框提示证书可能存在问题,如果证书没有问题就生成一个随机值,然后用证书对该随机值进行加密,就像2步骤所说把随机值锁起来,不让别人看到。

5.传送4步骤的加密数据:

就是将用证书加密后的随机值传递给服务器,目的就是为了让服务器得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值进行加密解密了。

6.服务端解密信息:

服务端用私钥解密5步骤加密后的随机值之后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,对称加密就是将信息和私钥遇过算法混合在一起,这样除非你知道私钥,不然是无法获取其内部的内容,而正好客户端和服务端都知道这个私钥,所以只要机密算法够复杂就可以保证数据的安全性。

7.传输加密后的信息:

服务端将用私钥加密后的数据传递给客户端,在客户端可以被还原出原数据内容。

8.客户题解密信息:

客户端用之前生成的私钥获解密服务端传递过来的数据,由于数据- -直是加密的,因此即使第三方获取到数据也无法知道其详细内容。


二、ssI 配置参数

Nginx 的 https 功能基于模块 ngx_http_ssL_module 实现,因此如果是编译安装的 nginx 要使用参数 ngx_http_ssl_module 开启 ssI 功能,但是作为 nginx 的核心功能,yum 安装的 nginx 默认就是开启的,编译安装的 nginx 需要指定编译参数 --with-http_ssl_module 开启,

官方文档:

https://giax.org/en/docs/http/ngx_http_ssl_module.html

配置参数如下:

ssl on 丨 off;

#为指定的虚拟主机配置是否启用 ssl 功能,此功能在1.15.0废弃,使用 Iisten [ss1] 替代。

ssl_certificate /path/to/file;

#当前虚拟主机使用使用的公钥文件,一般是 crt 文件

Ssl_certificate_key /path/to/file;

#当前虚拟主机使用的私钥文件,一般是 key 文件

Ssl_protocols [SSLV2] [SSLv3] [TLSV1] [TLSV1.1] [TLSV1.2];

支持 ssl 协议版本,早期为 ssl,现在是 TSL,默认为后三个

Ssl_session cache off I none 1 [builtin[:size]] [shared:name:size];  

#配置 ssl 缓存

off:关闭缓存

none:通知客户端支持 ssl session cache,但实际不支持

builtin[:size]:使用 openssL 内建缓存,为每 worker 进程私有

[shared:name:size]:在各 worker 之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小,一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称。

ssl_session, timeout time;#客户端连接可以复用 ssl session cache 中缓存的有效时长,默认5m。

设置存储会话参数的缓存的类型和大小缓存可以是以下任何一种:

off

严格禁止使用会话缓存:nginx 明确告知客户端不得重复使用会话。

none

禁止使用会话缓存:nginx 告诉客户端会话可以被重用,但实际上并没有在缓存中存储会话参数。

builtin

内置 OpenSSL 的缓存;仅由一个工作进程使用。缓存大小在会话中指定。如果未提供大小,到等于20480个会话。使用内置缓存可能导致内存碎片。

shared

所有工作进程之间共享的缓存。缓存大小以字节为单位;一兆字节可以存储大约4000个会话。每个共享缓存应具有任意名称。具有相同名称的缓存可以在多个虚拟服务器中使用。

两种缓存类型可以同时使用,例如:

ssl_session_cache 内置:1000共享:SSL:10m;

但仅使用共享缓存而不使用内置缓存应该会更有效率。


三、自签名证书

#自签名 CA 证书

[rootos2 -]# cd /apps/nginx/

[root0s2 nginx]# mkdir certs

[root@s2 nginx]# cd certs/

[roots2 nginx]# openssl req newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509-days 3650 -out ca.crt #自签名 CA 证书

Generating a 4096 bit RSA private key

..................++

…..

Country Name (2 letter code) [xx]:CN 国家代码,https://country-code .cl/

State or Province Name (full nane) []:Be1Jing   #省份

Locality Name (eg, city) [Default City]:Beijing  #城市名称

organization Name (eg, company) [Default Company Ltd] :magedu.Ltd  #公司名称

Organizational Unit Name (eg,section) []:magedu  #部门

Comon Name (eg,your name or your server's hostname) []:magedu.ca  #通用名称

Emall Address []:2973707860@qq.com   #邮箱

[root@s2 certs]# 11 ca.crt

-rw-r--r-- 1 root root 2118 Feb 22 12:10 ca.crt

#自制 key 和 csr 文件

[roots2 certs]# openssl req-newkey rsa:4096 -nodes -sha256 – keyout.www. magedu.net.key

-out www . magedu.net.csr

Generating a 4096 bit RSA private key

……………………++

……

Country Name (2 letter code) [X0x]:CN

State or Province Name (full name) []:BeiJing

Locality Name (eg, city) [Default City]:Be1Jing

Organization Name (eg,company) [Default Company Ltd]:magedu.net

Organizational Unit Name (eg, section) [] :magedu .net

Common Name (eg, your name or your server's hostname) [] :www.Magedu.net

Emall Address [1:2973707860@qq.com

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

[rootos2 certs]# 11

total 16

-rw-r--p- 1 root root 2118 Feb 22 12:10 ca.crt

-rw-r--r-- 1 root root 3272 Feb 22 12:10 ca.key

-rw-r--r-- 1 root root 1760 Feb 22 12:18 www. Magedu.net.csr

-rw-r--r-- 1 root root 3272 Feb 22 12:18 www. magedu.net.key

#签发证书

[root@s2 certs]#openssl x509 -req -days 3650 -in ww . magedu.net.csr -CA ca.crt CAkey

ca.key -CAcreateserial -out ww magedu.net.crt

Signature ok

subject=/C=CN/ST=BeiJing/L=Be1Jing/0=magedunet/0U=magedu.net/c-ww.magedu.net/emallAd

dress=29737078600qq.com

Getting CA Private Key

#验证证书内容

[root@s2 certs]# openssl x509 -in ww . magedu.net.crt -noout -text

Certificate.

Data:

Version: 1 (0x0)

Serial Number :  

bb:76:ea:fe: f4:04:ac:06

Signature Algorithm: sha256Wi thRSAEncryption

Issuer: C=CN, ST=BeiJing, L=Beijing, 0=magedu.Ltd, oU=magedu,

CN=magedu. ca/emailAddress-2973707860@qq. com

validity

Not Before: Feb 22 06:14:03 2019 GMT

Not After : Feb 22 06:14:03 2020 GMT

Subject: C=CN, ST=BeiJing, L=BeiJing, 0=magedu. net, oU=magedu.net,

CN=www. magedu. net/emailAddress-2973707860@qq. com

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

Public-Key: (4096 bit )

四、Nginx 证书配置

Ilisten 80;

listen 443 ssl;

ssl_certificate /apps/nginx/certs/www . magedu. net .crt;

ssl_certificate_key /apps/nginx/certs/www. magedu.net.key;

ssl_session_cache shared: sslcache :20m;

ssl_session_timeout 10m;

#重启 Nginx 并访问验证

相关文章
|
应用服务中间件 Linux 网络安全
Linux 安装 Nginx 并配置为系统服务(超详细)
Linux 安装 Nginx 并配置为系统服务(超详细)
|
6月前
|
存储 监控 文件存储
《告别磁盘空间焦虑!LVM的灵活分配与扩展秘籍》
逻辑卷管理(LVM)是磁盘空间管理的强大工具,突破了传统分区固定大小的限制。它通过物理卷(PV)、卷组(VG)和逻辑卷(LV)三层结构,实现存储空间的灵活分配与动态扩展。LVM适用于企业服务器、虚拟化环境及大数据集群等场景,能高效应对不断变化的存储需求。使用时需注意数据备份、合理规划与状态监控,确保系统稳定运行。掌握LVM原理与操作,可显著提升磁盘空间管理效率。
173 26
|
12月前
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
687 3
|
12月前
|
存储 PHP 对象存储
开源免费的图床源码整理汇总-个人自用图床相册程序推荐
开源免费的图床源码整理汇总-个人自用图床相册程序推荐
2020 0
|
网络协议 应用服务中间件 网络安全
阿里云免费SSL申请流程(白嫖20张SSL免费证书)2024年新版教程
本文详述了2024年最新的阿里云免费SSL证书申请流程。用户可通过阿里云数字证书管理服务控制台一键申请最多20张免费单域名SSL证书,每张证书有效期为3个月。首先登录控制台,选择“SSL证书管理”下的“个人测试证书”,同意协议并完成购买流程。之后需创建证书、输入域名等信息并进行域名验证。验证方法包括手动DNS验证、域名授权自动化验证或文件验证。完成验证后,等待审核通过即可下载适用于不同服务器类型的SSL证书。请注意,阿里云免费SSL证书到期后不支持续费,需重新申请。了解更多详情,请访问阿里云官方SSL证书页面。
|
网络协议 Ubuntu Linux
如何在 DigitalOcean 云服务器上创建自定义品牌名称服务器
如何在 DigitalOcean 云服务器上创建自定义品牌名称服务器
163 0
|
机器学习/深度学习 存储 算法
【MATLAB第6期】基于MATLAB的粒子群及若干改进的粒子群算法原理介绍 持续更新
【MATLAB第6期】基于MATLAB的粒子群及若干改进的粒子群算法原理介绍 持续更新
|
存储 缓存 网络协议
CDNJS/UNPKG/JSDelivr 太慢用不了,换成这些国内高速镜像
npm cdn, cdnjs, unpkg, jsdelivr, zstatic, zstatic.net, s4.zstatic.net
15335 4
|
安全 Unix Shell
shell脚本文件的权限和执行
shell脚本文件的权限和执行
1743 1
|
域名解析 存储 Rust
使用let's encrypt申请免费的SSL证书
使用let's encrypt申请免费的SSL证书
15517 2