11. Nginx进阶-HTTPS

简介

基本概述

SSL

SSL是安全套接层。
主要用于认证用户和服务器,确保数据发送到正确的客户机和服务器上。
SSL可以加密数据,防止数据中途被窃取。
SSL也可以维护数据的完整性,确保数据在传输过程中不被改变。

HTTPS

HTTPS就是基于SSL来实现的安全通信。

证书

证书用于保证密钥的合法性。
证书的主体可以是用户、服务、计算机等。
证书的格式准信X.509标准。
数字证书包含如下信息:

  1. 使用者的公钥值;
  2. 使用者标识信息(如名称和电子邮件地址);
  3. 有效期(证书的有效时间);
  4. 颁发者表示信息;
  5. 颁发者的数字签名;
  6. 注意:数字证书由权威公正的第三方机构签发。

小知识

  1. HTTPS证书的选择
    1. 专业版OV型证书,不显示企业名称
    2. 高级版EV型证书,显示企业名称
  2. HTTPS证书购买选择
    1. 通配符域名,如:*.o-learn.cn
    2. 保护域名,如:www.baidu.com
  3. HTTPS注意事项
    1. HTTPS不支持三级域名解析;
    2. HTTPS不支持续费,证书到期后需要重新申请并进行替换;
    3. HTTPS显示绿色,表示整个网站的URL都是HTTPS的;
    4. HTTPS显示黄色,表示网站中包含HTTP的不安全连接;
    5. HTTPS显示红色,表示证书过期或者证书是假的;

配置场景

应用

申请证书

私有证书

  1. 检查OpenSSL工具
    1. 检查是否安装
openssl --version
  1. 如未安装,以下命令安装
yum install openssl openssl-devel
  1. 检查nginx的ssl模块
nginx -V 2>&1 | grep ssl
#with-http_ssl_module
  1. 生成密钥
    1. 创建密钥目录
mkdir -p /www/ssl_key
cd /www/ssl_key
  1. 生成密钥
openssl genrsa -des3 -out wang_mingqu_com.key 1024# Generating RSA private key, 1024 bit long modulus
# ...++++++
# ..................................................................++++++
# e is 65537 (0x10001)
# Enter pass phrase for https.key: 123456
# Verifying - Enter pass phrase for https.key: 123456
  1. 删除私钥的密码
openssl rsa -in wang_mingqu_com.key -out wang_mingqu_com.key# Enter pass phrase for https.key: 123456
# writing RSA key
  1. 生成证书
    1. 创建签名请求证书
openssl req -new -key wang_mingqu_com.key -out wang_mingqu_com.csr# You are about to be asked to enter information that will be incorporated
# into your certificate request.
# What you are about to enter is what is called a Distinguished Name or a DN.
# There are quite a few fields but you can leave some blank
# For some fields there will be a default value,
# If you enter '.', the field will be left blank.
# -----
# Country Name (2 letter code) [XX]:CN
# State or Province Name (full name) []:HeNan
# Locality Name (eg, city) [Default City]:ZhengZhou
# Organization Name (eg, company) [Default Company Ltd]:MingQuKeJi
# Organizational Unit Name (eg, section) []:YunWeiBu
# Common Name (eg, your name or your server's hostname) []:wang.mingqu.com
# Email Address []:15515190288@163.com# Please enter the following 'extra' attributes
# to be sent with your certificate request
# A challenge password []:
# An optional company name []:
  1. 生成SSL证书
openssl x509 -req -days 365 -in wang_mingqu_com.csr -signkey wang_mingqu_com.key -out wang_mingqu_com.crt# Signature ok
# subject=/C=CN/ST=HeNan/L=ZhengZhou/O=MingQuKeJi/OU=YunWeiBu/CN=wang.mingqu.com/emailAddress=15515190288@163.com
# Getting Private key
  1. 查看证书和密钥
ll /www/ssl_key/
total 28
-rw-r--r-- 1 root  root  981 Feb 26 16:36 wang_mingqu_com.crt
-rw-r--r-- 1 root  root   716 Feb 26 16:32 wang_mingqu_com.csr
-rw-r--r-- 1 root  root  887 Feb 26 16:30 wang_mingqu_com.key

公网证书

配置HTTPS

  1. 创建证书存放目录
mkdir -p /etc/nginx/ssl_key
cp /www/ssl_key/wang_mingqu_com.crt /etc/nginx/ssl_key/
cp /www/ssl_key/wang_mingqu_com.key /etc/nginx/ssl_key/
chown -R nginx:nginx /etc/nginx/ssl_key/
  1. 编辑nginx配置文件

路径:/etc/nginx/conf.d/wangmingqu.conf

server {listen 443 ssl;server_name wang.mingqu.com;charset utf-8;#配置https证书#ssl on; 新版本nginx中无需添加此行。#证书的存放路径ssl_certificate /etc/nginx/ssl_key/wang_mingqu_com.crt;ssl_certificate_key /etc/nginx/ssl_key/wang_mingqu_com.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 / {root /www/wangmingqu/html;index index.html index.htm;}
}#跳转HTTPS
server {listen 80;server_name wang.mingqu.com;charset utf-8;#server_name:表示访问的域名,也可以使用变量$host;#server_name,跟定义的配置文件的server_name有关;#host,则是用户输入的内容;#request_uri:表示访问时域名后所有内容。rewrite .* https://$server_name$request_uri redirect;##写法二:#rewrite .* https://$host$request_uri redirect;##写法三:#rewrite (.*)  https://$server_name$1 redirect;
}
  1. 检查配置
nginx -t
systemctl reload nginx
  1. 访问测试

image.png
image.png

负载均衡HTTPS跳转

主机规划

主机名称主机IP服务
k8s-master-1192.168.108.129Nginx Proxy
k8s-master-2192.168.108.130Nginx Web1
k8s-master-3192.168.108.131Nginx Web2

配置站点

注意

移除其他测试配置文件

cd /etc/nginx/conf.d/
rename .conf .bak *.conf

web01配置

  1. 测试数据
mkdir -p /www/html/
echo "主机:192.168.108.130" > /www/html/index.html
chown -R nginx:nginx /www/html
  1. 配置nginx
    1. 主配置文件

配置文件路径:/etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}
  1. 子配置文件

配置文件路径:/etc/nginx/conf.d/web01.conf

server {listen 443;server_name wang.mingqu.com;chartset utf-8;location / {root /www/html/;index index.html index.htm;}
}
  1. 验证nginx服务
    1. 重启服务
nginx -t
systemctl restart nginx
  1. 验证服务
curl -iv 127.0.0.1:443

web02配置

  1. 测试数据
mkdir -p /www/html/
echo "主机:192.168.108.131" > /www/html/index.html
chown -R nginx:nginx /www/html
  1. 配置nginx
    1. 主配置文件

配置文件路径:/etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}
  1. 子配置文件

配置文件路径:/etc/nginx/conf.d/web02.conf

server {listen 443;server_name wang.mingqu.com;charset utf-8;location / {root /www/html/;index index.html index.htm;}
}
  1. 验证nginx服务
    1. 重启服务
nginx -t
systemctl restart nginx
  1. 验证服务
curl -iv 127.0.0.1:443

配置负载

注意

移除其他测试配置文件

cd /etc/nginx/conf.d/
rename .conf .bak *.conf

测试数据

mkdir -p /www/html/localhost
echo "主机:192.168.108.129" > /www/html/localhost/index.html
chown -R nginx:nginx /www/html

主配置文件

配置文件路径:/etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;rewrite_log     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}

子配置文件

配置文件路径:/etc/nginx/conf.d/proxy.conf

upstream web {server 192.168.108.130:443;server 192.168.108.131:443;
}server {listen 80;server_name wang.mingqu.com;charset utf-8;location / {proxy_pass http://web;}location /localhost {root /www/html/;index index.html index.htm;}
}

验证服务

  1. 重启nginx
nginx -t
systemctl restart nginx
  1. 验证nginx
    1. 负载均衡本地服务

image.png

  1. 负载均衡后端服务

image.png
image.png

HTTPS跳转配置

证书文件

mkdir -p /etc/nginx/ssl_key
cp /www/ssl_key/wang_mingqu_com.crt /etc/nginx/ssl_key/
cp /www/ssl_key/wang_mingqu_com.key /etc/nginx/ssl_key/
chown -R nginx:nginx /etc/nginx/ssl_key/

配置文件调整

upstream web {server 192.168.108.130:443;server 192.168.108.131:443;
}server {listen 443 ssl;server_name wang.mingqu.com;charset utf-8;#配置https证书#ssl on; 新版本nginx中无需添加此行。#证书的存放路径ssl_certificate /etc/nginx/ssl_key/wang_mingqu_com.crt;ssl_certificate_key /etc/nginx/ssl_key/wang_mingqu_com.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 / {proxy_pass http://web;include proxy_params;}
}#跳转HTTPS
server {listen 80;server_name wang.mingqu.com;charset utf-8;#server_name:表示访问的域名,也可以使用变量$host;#server_name,跟定义的配置文件的server_name有关;#host,则是用户输入的内容;#request_uri:表示访问时域名后所有内容。rewrite .* https://$server_name$request_uri redirect;##写法二:#rewrite .* https://$host$request_uri redirect;##写法三:#rewrite (.*)  https://$server_name$1 redirect;
}

测试HTTPS跳转

image.png
image.png
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/511127.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#QT(串口助手-界面)

1.IDE:QTCreator 2.实验:编写串口助手 3.记录 接收框:Plain Text Edit 属性选择:Combo Box 发送框:Line Edit 广告:Group Box (1)仿照现有串口助手设计UI界面 (2)此时串口助手大…

C#插入排序算法

插入排序实现原理 插入排序算法是一种简单、直观的排序算法,其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤如下 首先咱们假设数组长度为n,从第二个元素开始,将当前元素存储在临时变量temp中。 从当前元素的前一…

Windows环境MySQL全量备份+增量备份

目录 一、环境准备 1.1.安装MySQL 1.2.添加log-bin日志配置 二、创建测试数据库和表 2.1.创建测试数据库 2.2.创建测试数据表 三、全量备份恢复数据库 3.1.全量备份数据库 3.2全量恢复数据库 四、增量备份恢复数据库 4.1.增量备份数据库 4.2.增量恢复数据库 五、…

避坑——Matlab c# 联合编程——Native

相同的库,Matlab生成供.net调用的库时会有两套,也就是Native(本地),两套库各有优缺点,这这里就不说了,可以翻看网上其他博文 主要是MWStructArray,MWArray等数据交换对象有两套&…

科技云报道:阿里云降价,京东云跟进,谁能打赢云计算价格战?

科技云报道原创。 就在大家还在回味2月29日阿里云发布“史上最大降价”的惊喜时,京东云连夜发布降价消息,成为第一家跟进的云服务商,其“随便降,比到底!”的口号,颇有对垒的意味,直接吹响了云计…

3.1_2024ctf青少年比赛部分web题

php后门 根据x-powered-by知道php的版本 该版本存在漏洞: PHP 8.1.0-dev 开发版本后门 根据报错信息,进行提示,前 GET / HTTP/1.1 Host: challenge.qsnctf.com:31639 User-Agentt:12345678system(cat /flag);var_dump(2*3);zerodium12345678…

美摄科技实时语音数字人解决方案

随着科技的飞速发展,数字人技术已经逐渐渗透到我们生活的各个角落。作为数字人技术的先驱者,美摄科技凭借其卓越的实时语音数字人解决方案,正引领着企业步入一个全新的交互时代。 美摄科技的实时语音数字人解决方案,是基于语音和…

软件测试--性能测试工具JMeter

软件测试--性能测试工具JMeter 主流性能测试工具1.主流性能测试工具Loadrunner和Jmeter对比 —— 相同点2.主流性能测试工具Loadrunner和Jmeter对比 —— 不同点JMeter基本使用JMeter环境搭建1.安装JDK:2.安装Jmeter:3.注意点:JMeter功能概要1. JMeter文件目录介绍1.1 bin目…

【爬虫实战】——Python爬取天气信息

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

xss.haozi.me:0x03及04

这里有一个正则所以&#xff08;&#xff09;要用到实体编码 <a href"javascript:alert1">cc</a> 03 04都一样

Tomcat(二) 动静分离

一、(TomcatNginx)动静分离 1、单机反向代理 利用 nginx 反向代理实现全部转发至指定同一个虚拟主机 客户端curl www.a.com 访问nginx服务&#xff0c;nginx服务通过配置反向代理proxy_pass www.a.com:8080&#xff0c;最终客户端看到的是www.a.com 实验中&#xff1a;7-3 做客…

wordpress模板官网

移民wordpress主题 移民代办wordpress主题&#xff0c;适合做海外移民咨询的代理公司搭建wordpress企业官方网站使用。 https://www.jianzhanpress.com/?p5130 夏令营wordpress主题 绿色夏令营wordpress主题&#xff0c;适合做夏令营或户外拓展的公司搭建wordpress官方网站…