Linux:nginx设置网站https

httphttps的区别

http:   80  

https:  443   这种协议比http协议要安全,因为传输数据是经过加密的


HTTPS简介 

HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据

2.https协议原理

首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来 


证书和私钥的生成 

 使用nginx的源码包进行安装,下载包的基础教程请看下面这个文章Linux:nginx基础搭建(源码包)_linux nginx 源码-CSDN博客icon-default.png?t=N7T8https://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.csr

1.输入前面创建的密码
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成功

猜你喜欢

转载自blog.csdn.net/w14768855/article/details/135433342