Nginx http https

Openssl(linux)

1 OpenSSL下载安装

1.0下载openssl在这里下载(https://www.openssl.org/source/old/1.1.1/

    1. 安装OpenSSL: 将下载的压缩包放在根目录(根据自己习惯记好位置即可)

1)在文件夹下解压缩,得到openssl-1.1.1f文件夹

# tar -xzf openssl-1.1.1f.tar.gz

2)进入解压好的目录文件openssl-1.1.1f文件夹

# cd openssl-1.1.1f

3)创建文件夹(这里位置和下面4设定的位置要一致)

# mkdir /usr/local/openssl

4) 设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:

# ./config --prefix=/usr/local/openssl

5)执行命令

# ./config -t

6) 执行make,编译Openssl

# make

7) 安装 Openssl

# make install

    8)查看是否安装成功或是否已经安装过

    # openssl version

    9)卸载旧版本 OpenSSL的方法(一般不用)

1 apt-get purge openssl

2 rm -rf /etc/ssl #删除配置文件

1.2报错情况 未安装gcc

yum -y install gcc ,安装gcc网络要顺畅

2 OpenSSL生成证书

2.1创建根证书CA

    1)查看openssl的配置文件openssl.cnf的存放位置(即openssl的安装位置)

        openssl version -a

2)查看openssl的配置文件openssl.cnf,因为配置文件中对证书的名称和存放位置等相关信息都做了定义。

vim /etc/pki/tls/openssl.cnf

3)创建为根证书CA所需的目录及文件

#根据配置文件信息,到CA根目录,若没有则自己创建(也可自定义记好即可

cd /etc/pki/CA   (mkdir /etc/pki/CA 创建目录)

#创建配置文件信息中所需的目录及文件

mkdir -pv {certs,crl,newcerts,private}

touch {serial,index.txt}

4)指明证书的开始编号

echo 01 >> serial

5)生成根证书的私钥(注意:私钥的文件名与存放位置要与配置文件中的设置相匹配)。

(umask 077; openssl genrsa -out private/cakey.pem 2048)

参数说明:

genrsa  --产生rsa密钥命令

-aes256--使用AES算法(256位密钥)对产生的私钥加密,这里没有此参数,则只是用了rsa算法加密。

-out  ---输出路径,这里指private/ca.key.pem

这里的参数2048,指的是密钥的长度位数,默认长度为512位

https://i-blog.csdnimg.cn/blog_migrate/d1a84e9f3e0ae35b073192b62b92842d.png

6)生成自签证书,即根证书CA,自签证书的存放位置也要与配置文件中的设置相匹配,生成证书时需要填写相应的信息。(时间的话使用3650也就是十年)注意写下面内容时一定记好,无法删除

 

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 3650

 

Country Name (2 letter code) [XX]  国家俩个字代码 CN (中国大陆)

State or Province Name (full name) [] 州或省名称(全名)[] 

Locality Name (eg, city) [Default City]: 地区名称(例如,城市)[默认城市]:

Organization Name (eg, company) [Default Company Ltd]组织名称(如公司)[违约公司有限公司]

Organizational Unit Name (eg, section) []组织单位名称(例如,部门)[]

Common Name (eg, your name or your server's hostname) []: 通用名称(例如,您的名称或服务器的主机名)[]:

A challenge password []挑战密码[]

An optional company name []:可选公司名称[]:

 

 

-new:表示生成一个新证书签署请求

-x509:专用于CA生成自签证书,如果不是自签证书则不需要此项

-key:用到的私钥文件

-out:证书的保存路径

-days:证书的有效期限,单位是day(天),默认是openssl.cnf的default_days

 

这样子,根证书CA就已经生成完成了。

https://i-blog.csdnimg.cn/blog_migrate/2142f57e17a9b9e5f2f109d872780cb0.png

2.2颁发证书

    1)在需要证书的服务器上,生成证书签署请求,生成私钥,该私钥的位置可随意定

(umask 077; openssl genrsa -out test.key 2048)

 

2)生成证书签署请求

openssl req -new -key test.key -out test.csr -days 3650

https://i-blog.csdnimg.cn/blog_migrate/3bc1d348f6774031a8e555a7c65f4221.png

3)颁发证书,即签名证书,生成crt文件 #颁发证书

openssl ca -in /etc/pki/CA/test/test.csr -out /etc/pki/CA/test/test.crt -days 3650

https://i-blog.csdnimg.cn/blog_migrate/007452ca08f1d58380e9e45bd5d36597.png

4)#查看证书信息

openssl x509 -in /etc/pki/CA/test/test.crt -noout -serial -subject

5)格式转换为pfx格式的私钥

openssl pkcs12 -export -out test.pfx -inkey /etc/pki/CA/test/test.key -in test.crt

https://i-blog.csdnimg.cn/blog_migrate/dd2406aca07ab53bc77f8c3690a5e1a5.png

注意,-inkey的值test.key是需要证书服务器上生成的私钥key文件

6)格式转换为cer格式的公钥

openssl x509 -inform pem -in test.crt -outform der -out test.cer

#查看cer证书信息

openssl x509 -in test.cer -text -noout

#若报错unable to load certificate,则说明你打开的证书编码是der格式,需要用以下命令

openssl x509 -in test.cer -inform der -text -noout

参数含义:

-inform pem,由于输入的test.crt文件是以pem编码的,故需要指定以pem编码来读取。

-outform der,输出的test.cer文件需要以der编码。

Nginx(linux)

Nginx下载安装

1.0下载安装

在这里下载(http://nginx.org/en/download.html

    1. nginx安装

1)安装需要依赖的其他库

需要安装gcc环境

# yum install gcc-c++

第三方的开发包

# yum install -y pcre pcre-devel

#yum install -y zlib zlib-devel

# yum -y install pcre  pcre-devel zlib  zlib-devel openssl openssl-devel

2)把nginx源码包上传到linux系统上

3)解压到/usr/local/nginx (目录自定义,没有则创建)

# tar -xvf nginx-1.19.0.tar.gz -C /usr/local/nginx
4) 使用cofigure命令创建一个makeFile文件
执行下面的命令的时候,一定要进入到nginx-1.14.0目录里面去(注:下面整个都是命令)

    ./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi \--with-http_stub_status_module \--with-http_ssl_module \--with-file-aio \--with-http_realip_module

参数:error http log 日志地址

5)创建目录/var/temp/nginx/

    # mkdir /var/temp/nginx -p

6)进入nginx-1.19.0里面执行make命令进行编译

#make

7)进入nginx-1.19.0里面执行make install 命令进行安装

#make install

8)进入安装位置/usr/local/nginx查看目录结构

    #ll

Nginx启动和配置

2.1启动nginx

进入sbin目录,执行命令./nginx

[root@admin sbin]# ./nginx

2.2查看nginx是否启动

[root@admin sbin]# ps -aux | grep nginx

参数说明:

ps命令用于报告当前系统的进程状态。

-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。

a:显示现行终端机下的所有程序,包括其他用户的程序。

u:以用户为主的格式来显示程序状况。

x:显示所有程序,不以终端机来区分。

2.3关闭nginx

[root@admin sbin]#  ./nginx -s stop

或者

[root@admin sbin]# ./nginx -s quit

2.4刷新配置文件

[root@admin sbin]# ./nginx -s reload

Nginx配置文件

nginx配置文件的位置:/usr/local/nginx/conf/nginx.conf

 

根据配置文件可以访问多个端口(注:配置多个虚拟机时确认端口是否开启,防护墙,命令在下面)

 

http默认是80端口 https默认是443端口

  server {

          listen 81;

          server_name localhost;

          location / {

           #root html;

           #index index1.html index1.htm;

           proxy_pass https://www.baidu.com/?tn=88093251_34_hao_pg;

        }  }

http和https ssl on;注释就可以了,其中http访问80端口,而https访问443端口(http默认80端口,https默认443端口)

 

server {

        listen 80;

        listen 443 ssl;

        server_name localhost;

        ssl_certificate /usr/local/nginx/cert/test.crt;# 证书位置

       ssl_certificate_key /usr/local/nginx/cert/test.key; # 证书秘钥

        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 ~ .*\.(gif|jpg|jpeg|png)$ {  #这里是访问静态资源图片

            expires 24h; 

            root /home/images/;#指定图片存放路径 

            access_log /usr/local/nginx/logs/images.log;#图片 日志路径 

            proxy_store on; 

            proxy_store_access user:rw group:rw all:rw; 

            proxy_temp_path         /home/images/;#代理临时路径

            proxy_redirect          off; 

 

            proxy_set_header        Host 127.0.0.1; 

            proxy_set_header        X-Real-IP $remote_addr; 

            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; 

            client_max_body_size    10m; 

            client_body_buffer_size 1280k; 

            proxy_connect_timeout   900; 

            proxy_send_timeout      900; 

            proxy_read_timeout      900; 

            proxy_buffer_size       40k; 

            proxy_buffers           40 320k; 

            proxy_busy_buffers_size 640k; 

            proxy_temp_file_write_size 640k; 

            if ( !-e $request_filename) 

            { 

                 proxy_pass  https://127.0.0.1:443;#代理访问地址 

            } 

        }

        location / {

            proxy_pass https://www.baidu.com/; #这里的xx.cn 是我们需要转发的 ,配合 修改hosts文件 127.0.0.1  xx.cn

        }

        error_page 404 /404.html;

            location = /40x.html {

        }

        error_page 500 502 503 504 /50x.html;

            location = /50x.html {

        }

}

 

注意事项命令

启动:

start nginx或nginx.exe

2、停止:

nginx.exe -s stop或nginx.exe -s quit

注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

3、重新载入Nginx:

nginx.exe -s reload

当配置信息修改,需要重新载入这些配置时使用此命令。

4、重新打开日志文件:

nginx.exe -s reopen

5、查看Nginx版本:nginx -v

 

Nginx /sbin文件下

启动./nginx

查看ps -aux | grep nginx

关闭 ./nginx -s stop    ./nginx -s quit

刷新配置文件  ./nginx -s reload

 

lsof -i:端口号 查看端口是否开启

1、开启防火墙 

    systemctl start firewalld

2、开放指定端口

      firewall-cmd --zone=public --add-port=1935/tcp --permanent

 命令含义:

--zone #作用域

--add-port=1935/tcp  #添加端口,格式为:端口/通讯协议

--permanent  #永久生效,没有此参数重启后失效

3、重启防火墙

      firewall-cmd --reload

 

4、查看端口号

netstat -ntlp   //查看当前所有tcp端口·

netstat -ntulp |grep 1935   //查看所有1935端口使用情况·

注意!!!!

一定查看端口是否开启,防火墙是否开启。

检查Nginx是否支持SSL

/usr/local/nginx/sbin/nginx  -V
configure arguments中是否有--with-http_ssl_module

生成秘钥证书的另一种方式

1. 使用openssl生成密钥privkey.pem:

openssl genrsa -out privkey.pem 1024/2038

 

2. 使用密钥生成证书server.pem:

openssl req -new -x509 -key privkey.pem -out server.pem -days 3650

 

Nginx访问资源

location ~ \.(mp4|png|txt) {

  root /usr/local/tomcat9/webapps/scm;

  autoindex on;

}

注意root代表的是替换请求URL中域名的值,如请求的URL为 https:www.xxx.com/fs/edsfsf.png,nginx会将域名替换为root值去找文件,这个时候文件在系统中的路径是 :

/usr/local/tomcat9/webapps/scm/fs/edsfsf.png

问题:遇到403无权访问时,可将 配置文件中的这个配置加上  user  root;

 

# 这里是访问的路径,即:http://{server_name}/update/sso

location /update/sso{

       # 关联的本地目录

       alias /tianjun/files/sso;

       # 是否自动生成目录树(自动索引)

       autoindex on;

}

如有雷同的请联系修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值