有HTTP了,为什么需要HTTPS
主要原因是HTTP数据传输时没有对数据进行加密,所以导致数据不安全 。而HTTPS在HTTP上加了一层,对数据进行加密,这样就保证了数据的安全性 。防止传输的数据过程中被不法分子盗用、劫持、篡改,而导致数据信息的泄露 。
HTTPS协议的实现
对传输内容进行加密以及身份验证
- 对称加密:加密秘钥和解密秘钥是一样的

文章插图
- 非对称加密:加密密钥与解密密钥是不一样的,但是是成对的 。

文章插图
- HTTPS加密协议原理

文章插图
中间人伪造客户端和服务端:(中间人可以伪装成客户端和服务端,中间人可以对数据进行劫持,不安全)

文章插图
HTTPS的CA签名证书:(服务端和客户端通过实现约定好的证书进行认证,都会对证书进行校验,所以中间人没法劫持数据,故安全)

文章插图
0x01:先验证Nginx安装情况
在【Nginx系列:Nginx源码安装】 文章中,知道安装Nginx时,必须首先安装openssl openssl-devel依赖 模块,而这两个模块就是HTTPS需要用户的类库;所以毫无疑问安装Nginx时,linux系统肯定安装了这两个模块;
Nginx的https需要安装with-stream_ssl_preread_module目录,在nginx的源码目录执行以下命令,可以看出nginx默认并不会安装stream_ssl_preread_module模块的,需要重新编译安装一下
cat auto/options | grep YES | grep ssl
文章插图
安装一下stream_ssl_preread_module模块
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_secure_link_module --with-http_stub_status_module --with-stream_ssl_preread_module--with-http_ssl_modulemakecd objs/mv nginx /usr/local/nginx/sbin/ 0x02:生成秘钥和CA证书
- 生成key秘钥
cd /usr/local/nginx/conf/mkdir httpsKeyscd httpsKeys先看下openssl命令的基本用法基本语法:openssl genrsa [args] [numbits]说明:args1 对生成的私钥文件是否要使用加密算法进行对称加密: -des : CBC模式的DES加密 -des3 : CBC模式的3DES加密 -aes128 : CBC模式的AES128加密 -aes192 : CBC模式的AES192加密 -aes256 : CBC模式的AES256加密 args2 对称加密密码 -passout passwords 其中passwords为对称加密(des、3des、aes)的密码(使用这个参数就省去了console交互提示输入密码的环节) args3 输出文件 -out file : 输出证书私钥文件 [numbits]: 密钥长度,理解为私钥长度 使用如下命令生成key秘钥openssl genrsa -idea -out jesonc.key 2048
文章插图
执行以上命令需要输入密钥key的密码,这里使用密码:admin,最终在当前目录生成一个jesonc.key的密钥文件 。
- 生成证书签名请求文件(csr文件)
openssl req -new -key jesonc.key -out jesonc.csr 
文章插图
执行命令的过程中需要根据提示输入一些相关的信息,最终会在当前目录生成jesonc.csr文件 。
- 生成证书签名文件(CA文件)
openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt
推荐阅读
- 网络编程之 Https 详细分析,超详细知识点
- 国艳境界系列知识百科,品茶的十层境界
- 通过Nginx来实现禁止国外IP访问网站
- Nginx和Tomcat配合实现Java Web服务热部署
- 不会这些东东,不敢说你会nginx?
- Nginx自带后端健康检查
- 技术积淀---nginx限速
- Nginx基本原理和代理模式
- Nginx配置各种响应头防止XSS点击劫持,frame恶意攻击
- 红茶系列包括哪些茶,红茶介绍红茶的种类与泡法红茶的功效与作用
