目录
一、SSL
Ⅰ、概述
Ⅱ、SSL证书
Ⅲ、HTTPS
Ⅳ、SSL工作原理
二、创建SSL证书
Ⅰ、安装openssl
Ⅱ、生成证书
三、nginx配置
Ⅰ、nginx打补丁添加模块
Ⅱ、nginx.conf配置
四、访问
一、SSL
Ⅰ、概述
SSL(Security Socket Layer)是一个安全协议,为基于TCP(Transmission Control Protocol)的应用层协议提供安全连接,SSL介于TCP/IP协议栈第四层和第七层之间。主要提供私密性、完整性和身份验证;我们常见的就是 SSL为HTTP(Hypertext Transfer Protocol)协议提供安全连接。SSL协议是一种在两个机器之间提供安全通道的协议,它具有保护数据传输以及识别通信机器的功能
Ⅱ、SSL证书
SSL证书是数字证书的一种,由权威数字证书机构(CA)验证网站身份后颁发,可实现浏览器和网站服务器数据传输加密。网站安装SSL证书后会在浏览器显示安全锁标志,数据传输协议从http(传统协议) 升级为 https(加密协议)
Ⅲ、HTTPS
安全的原理是基于HTTP+TCL/SSL协议组合实现的,所以HTTP和HTTPS的主要区别本质在于TCL/SSL安全协议上的区别。HTTPS是一种安全的协议,通过密钥交换算法 - 签名算法 - 对称加密算法 - 摘要算法确保安全
默认443端口
Ⅳ、SSL工作原理
1、浏览器发送一个https的请求给服务器;
2、服务器要有一套数字证书,可以自己制作,也可以向组织申请,这套证书其实就是一对公钥和私钥;
3、服务器会把公钥传输给客户端;
4、客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密;
5、客户端把加密后的随机字符串传输给服务器;
6、服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据(该加密为对称加密,所谓对称加密,就是将数据和私钥也就是这个随机字符串通过某种算法混合在一起,这样除非知道私钥,否则无法获取数据内容);
7、服务器把加密后的数据传输给客户端;
8、客户端收到数据后,再用自己的私钥解密。
二、创建SSL证书
Ⅰ、安装openssl
yum install -y openssl openssl-devel
Ⅱ、生成证书
创建一个证书存放目录
mkdir -p /etc/nginx/ssl_key
创建私钥、生成证书
openssl genrsa -idea -out server.key 2048
openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
req 表示证书输出的请求
-days 3650 时间=10 年
-x509 签发x509格式证书命令
-newkey 此选项创建一个新的证书请求和一个新的私钥。
-key密钥
-new表示新的请求
-out输出路径
三、nginx配置
手工编译安装nginx:nginx-1.22.0手工编译安装
Ⅰ、nginx打补丁添加模块
cd /opt/nginx-1.22.0/
#nginx安装包目录
nginx -V
#查看是否安装了SSL模块,*如果显示没有此命令,作如下操作
vim /etc/profile
PATH=$PATH:/usr/local/nginx/sbin
export PATH
source /etc/profile
#如果没有,进行打补丁操作
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--add-module=/opt/nginx/nginx-module-vts-master \
--with-http_ssl_module
#监控模块
#ssl模块
make
#注意不要进行make install
systemctl stop nginx
cp ./objs/nginx /usr/local/nginx/sbin/
#复制并进行覆盖,如果需要保留前版本,注意先进行备份转移
Ⅱ、nginx.conf配置
vim /usr/local/nginx/conf/nginx.conf
#-----省略部分内容-----
server {
listen 443 ssl; #SSL 访问端口为443
server_name www.lvjiapeng.com; #证书绑定域名
charset utf-8;
access_log /var/log/nginx/nginx.log; #日志文件
ssl_certificate /etc/nginx/ssl_key/server.crt; #证书文件位置
ssl_certificate_key /etc/nginx/ssl_key/server.key; #私钥文件位置
location / {
root html;
index index.html index.htm;
}
}
#-----省略部分内容-----
server {
listen 80;
server_name www.lvjiapeng.com;
rewrite .* https://$server_name$1 redirect;
}
#-----省略部分内容-----
---wq