SSL(Security Socket Layer)是一个安全协议,为基于TCP(Transmission Control Protocol)的应用层协议提供安全连接,SSL介于TCP/IP协议栈第四层和第七层之间。主要提供私密性、完整性和身份验证;我们常见的就是 SSL为HTTP(Hypertext Transfer Protocol)协议提供安全连接。SSL协议是一种在两个机器之间提供安全通道的协议,它具有保护数据传输以及识别通信机器的功能。
SSL证书是数字证书的一种。因为配置在服务器上,也称为SSL服务器证书。SSL证书由受信任的数字证书颁发机构颁发,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了。即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露,保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。
HTTP over SSL 简写https,加密网页浏览是设计SSL的初衷,HTTP也是第一个使用SSL保障安全的应用层协议。
使用https://来标识HTTP over SSL,因此我常见的https的全称就是HTTP over SSL。后来HTTPS在RFC2818被标准化。HTTPS工作在443端口,而HTTP默认工作在80端口。
检查是否安装openssl程序
rpm -q openssl openssl-devel
yum install -y openssl openssl-devel
1.创建密钥目录,此处建议放在nginx/conf目录下
mkdir -p /usr/local/nginx/conf/ssl_key
切换目录
cd /usr/local/nginx/conf/ssl_key
2.创建私钥
openssl genrsa -idea -out server.key 2048
openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
nginx -V 查看nginx服务配置,查看是否安装ssl模块
切换到服务安装目录
cd /opt/nginx-1.20.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module #为ssl模块
make
注:因为之前编译了nginx,所以此时不用make install
停止服务 systemctl stop nginx.service
备份源服务文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
[root@xiayan nginx-1.20.2]# cp objs/nginx /usr/local/nginx/sbin/nginx
vim /usr/local/nginx/conf/nginx.conf
server {
listen 443 ssl; #SSL 访问端口为443
server_name www.xiayan.com; #证书绑定域名
charset utf-8;
access_log /var/log/nginx/nginx.log; #日志文件
ssl_certificate ssl_key/server.crt; #证书文件名称
ssl_certificate_key ssl_key/server.key; #私钥文件名
#此处文件若不在conf目录下,则需填写文件绝对路径
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
mkdir -p /var/log/nginx/nginx.log #创建日志文件目录
#在server全局设置中添加重定向转发规则
rewrite (.+) https://www.xiayan.com permanent;
检查配置文件是否有问题,并重启服务
向本地hosts文件,添加主机映射地址
使用本机或者虚拟主机,访问www.xiayan.com,看是否跳转https://
博主使用的是w10虚拟主机,这里需要改下主机映射
打开浏览器访问
因为它不是由已配置为信任浏览器的证书颁发机构签名的证书,所以会报错。单机继续
1.简单来说,SSL协议为http提供了一种加密的传输协议https
2.在实际生产中,我们常将http的请求重定向为https的。比如我们访问百度,CSDN等等网站时,地址都会转为https
3.因本文使用的是自创的ssl证书,是不受浏览器信任的。在实际生产环境中,可以向专门颁发ssl证书的机构进行申请,然后将下载的证书放到nginx配置文件中,添加配置即可