http和https的区别
http: 80
https: 443 这种协议比http协议要安全,因为传输数据是经过加密的
HTTPS简介
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据
2.https协议原理
首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来
证书和私钥的生成
使用nginx的源码包进行安装,下载包的基础教程请看下面这个文章Linux:nginx基础搭建(源码包)_linux nginx 源码-CSDN博客https://blog.csdn.net/w14768855/article/details/131445878?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170455179216800184146177%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170455179216800184146177&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-131445878-null-null.nonecase&utm_term=nginx&spm=1018.2226.3001.4450基础的安装全部步骤我就不细讲了,就说几个重要的步骤
下载基础环境
yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
配置源码包,如果你之前已经配置过了也没关系,关闭nginx进程重新配置
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-pcre && make && make install
由于我们只是自己练习,我们自己给自己颁发证书,在真实情况下要找权威机构申请证书才行
由于我们只是自己练习,我们自己给自己颁发证书,在真实情况下要找权威机构申请证书才行
由于我们只是自己练习,我们自己给自己颁发证书,在真实情况下要找权威机构申请证书才行
开始创建证书密钥文件
openssl genrsa -des3 -out server.key 1024# 再输入两次密码
创建证书申请文件
openssl req -new -key server.key -out server.csr1.输入前面创建的密码 2.输入国家代号 3.输入省的全名(拼音) 4.输入市的全名(拼音) 5.输入公司名 6.可以不输入直接回车 7.网站全面(www.***.com) 8.电子邮箱 9.可以直接回车跳过 10.可以直接回车跳过
备份一份服务器密钥文件
cp server.key server.key.org
去除文件口令
openssl rsa -in server.key.org -out server.key
生成证书文件server.crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
现在密钥和证书就生成好了
修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#比起默认的80 使用了443 默认 是ssl方式 多出default之后的ssl
listen 443 default ssl;
#default 可省略
#开启 如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用
# ssl on;
#证书(公钥.发送到客户端的)
ssl_certificate ssl/server.crt;
#私钥,
ssl_certificate_key ssl/server.key;#域名
server_name www.***.*
mkdir -p /usr/local/nginx/conf/ssl
再把密钥和证书放进去
cp server.crt server.key /usr/local/nginx/conf/ssl/
再重启nginx
访问网站,手动添加 ——》 https://域名
自动跳转到https
现在我们访问域名他会访问失败,还需要手动在前面添加https,因为他访问的是80,我们在80端口做个监听,自动跳转到443
如若想要客户端访问http://www.tarro.com 的时候自动跳转到https://www.tarro.com
再次进入nginx文件
vim /usr/local/nginx/conf/nginx.conf# 在原来的server上添加一个server用来监听80端口server{listen 80;server_name www.tarro.com;rewrite ^(.*) https://$host$1 permanent;}
当访问网站时候自动跳转到https成功