【运维知识进阶篇】集群架构-HTTPS证书详解

news2025/1/16 0:23:10

HTTPS证书在企业中非常重要,因为HTTP不安全,采用HTTP协议容易受到劫持和篡改,如果是采用HTTPS,数据在传输过程中加密,可以避免报文信息被窃取篡改,避免网站传输时信息泄露。实现https,要了解SSL协议,现在我们使用的大多是TLS加密协议了,HTTPS运行在应用层,TLS应用在表示层,是SSL协议发挥作用的一层,使应用层的HTTP协议在没有感知的情况下实现了数据的加密传输。 

HTTP加密传输流程

浏览器发起请求,服务端接收请求,返回给浏览器证书、证书中包含公钥,浏览器判断证书是否合法,如果不合法进行警告提示。如果合法,生成随机数,通过公钥加密随机数,把加密后的随机数传输给服务端,服务端通过私钥解密获得随机数,通过传入随机数的对称加密,对数据进行加密,将加密后的内容传输给浏览器,浏览器根据本地存储的随机数进行解密。

模拟网站被篡改

1、配置Nginx文件

[root@Web01 test]# cat /etc/nginx/conf.d/test.conf server {
	listen 80;
	server_name test.koten.com;
	root /code/test;
	index index.html;
	charset utf-8;
}

2、配置Nginx页面

[root@Web01 test]# cat /code/test/index.html 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我是title</title>
</head>
<body>
<article>
  <header>
    <h1>你好</h1>
  </header>
  <p>
    <b>你</b>最近过的好嘛?
  </p>
  <footer>
    <p><small>版权所有@koten</small></p>
  </footer>
</article>
</body>
</html>
[root@Web01 test]# 

3、查看Nginx页面

4、配置Nginx拦截服务器

[root@Web02 ~]# vim /etc/nginx/conf.d/jiechi_test.conf
upstream jiechi {
        server 10.0.0.7:80;
}

server {
        listen 80;
        server_name test.koten.com;

        location / {
                proxy_pass http://jiechi;
                proxy_set_header Host $http_host;
                sub_filter '<h1>你好' '<h1>我好';
                sub_filter '<small>版权所有' ' <sma
ll>开源';
        }
}
<t.conf" [New] 15L, 360C written 
[root@Web02 ~]# systemctl restart nginx

5、查看篡改后的内容

 6、添加篡改广告

[root@web02 conf.d]# vim jiechi_test.conf
upstream jiechi {
        server 10.0.0.7:80;
}

server {
        listen 80;
        server_name test.koten.com;

        location / {
                proxy_pass http://jiechi;
                proxy_set_header Host $http_host;
                sub_filter '<h1>你好' '<h1>花生瓜子烤鱼片';
                sub_filter '<small>版权所有' ' <small><img src="https://p6.itc.cn/q_70/images03/20201226/f979021adb324417bb6dd3889698ee0b.jpeg">';
        }
}
<hi_test.conf" 15L, 459C written 
[root@Web02 ~]# systemctl restart nginx

7、查看篡改界面

证书类型介绍

域名型DV企业型OV增强型EV
绿色地址栏小锁标记+HTTPS小锁标记+HTTPS小锁标记+企业名称+HTTPS
一般用途个人站点,简单的HTTPS加密需求电子商务站点和应用,中小型企业站点大型金融平台,大型企业和政府机构站点
审核内容域名所有权验证全面的企业身份验证,域名所有权验证最高等级的企业身份验证,域名所有权验证
颁发时长几分钟-24小时3-5工作日5-7工作日
单次申请年限1年1-2年1-2年
赔付保障金125-175万美金150-175美金

证书购买选择及注意事项

可以选择保护 一个域名www

                       五个域名www、images、cdn、test、m

                       通配符域名*.koten.com

注意

1、证书不支持续费,证书到期需要重新申请并进行替换

2、不支持三级域名解析,如test.m.koten.com

3、显示绿色,说明整个网站的URL都是HTTPS,显示黄色,说明网站代码中包含HTTP的不安全链接,显示红色,说明证书是假的或者证书过期。

Nginx单台服务器实现证书

1、Nginx上需要有--with-http_ssl_module模块,创建存放ssl证书的路径

[root@Web01 test]# mkdir -p /etc/nginx/ssl_key
[root@Web01 test]# cd /etc/nginx/ssl_key/
[root@Web01 ssl_key]# 

2、使用openssl命令充当CA权威机构创建证书(生产不使用此方式生成证书,这是不被互联网认可的黑户证书)

[root@Web01 ssl_key]# openssl genrsa -idea -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...............................+++
.....+++
e is 65537 (0x10001)
Enter pass phrase for server.key:    #输入密码6666
Verifying - Enter pass phrase for server.key:
[root@Web01 ssl_key]# 

3、生成自签证书,同时去掉私钥的密码

[root@Web01 ssl_key]# openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
Generating a 2048 bit RSA private key
..............................................................................+++
...+++
writing new private key to 'server.key'
-----
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) []:BeiJing
Locality Name (eg, city) [Default City]:BeiJing
Organization Name (eg, company) [Default Company Ltd]:BeiJing 
Organizational Unit Name (eg, section) []:BeiJing
Common Name (eg, your name or your server's hostname) []:koten.com
Email Address []:666666@qq.com   
[root@Web01 ssl_key]# 


# req  --> 用于创建新的证书
# new  --> 表示创建的是新证书    
# x509 --> 表示定义证书的格式为标准格式
# key  --> 表示调用的私钥文件信息
# out  --> 表示输出证书文件信息
# days --> 表示证书的有效期

4、修改Nginx配置文件

[root@Web01 ssl_key]# cat /etc/nginx/conf.d/test.conf 
server {
        listen 443 ssl;
        server_name test.koten.com;
        ssl_certificate   /etc/nginx/ssl_key/server.crt;
        ssl_certificate_key  /etc/nginx/ssl_key/server.key;
        location / {
                root /code/test;
                index index.html;
        }
}

#配置将用户访问http请求强制跳转https
server {
        listen 80;
        server_name test.koten.com;
        return 302 https://$server_name$request_uri;
}
[root@Web01 ssl_key]# systemctl restart nginx
[root@Web01 ssl_key]# echo '测试ssl' > /code/test/index.html 

5、浏览器访问

Nginx集群实现证书

1、准备LB01(10.0.0.5、172.16.1.5)做负载均衡,Web02(10.0.0.8、172.16.1.8)、Web03(10.0.0.9、172.16.1.9)两台服务器

2、配置Web02、Web03服务器监听80端口

[root@Web02 ~]# cat /etc/nginx/conf.d/ssl.conf
server {
        listen 80;
        server_name ssl.koten.com;

        location / {
                root /code/ssl;
                index index.html;
        }
}
[root@Web02 ~]# systemctl restart nginx

[root@Web03 ~]# cat /etc/nginx/conf.d/ssl.conf
server {
        listen 80;
        server_name ssl.koten.com;

        location / {
                root /code/ssl;
                index index.html;
        }
}
[root@Web03 ~]# systemctl restart nginx

3、拷贝证书到LB服务器

[root@LB01 ~]# scp -rp 172.16.1.7:/etc/nginx/ssl_key /etc/nginx/
The authenticity of host '172.16.1.7 (172.16.1.7)' can't be established.
ECDSA key fingerprint is SHA256:zQvI/tCFYssR7l6cr90EtaIA93FXJp8FmUhGtkZshlA.
ECDSA key fingerprint is MD5:0b:a1:ee:d2:75:92:1a:62:05:63:5e:d1:e8:42:13:84.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.7' (ECDSA) to the list of known hosts.
root@172.16.1.7's password: 
server.key       100% 1704   906.5KB/s   00:00    
server.crt       100% 1411     1.0MB/s   00:00    

4、配置LB01的Nginx配置文件

[root@LB01 ~]# cat /etc/nginx/conf.d/proxy_ssl.conf 
upstream website {
        server 172.16.1.8:80;
        server 172.16.1.9:80;
}

server {
        listen 443 ssl;
        server_name ssl.koten.com;
        ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;
        location / {
            proxy_pass http://website;
            proxy_set_header Host $http_host;
        }
}

server {
        listen 80;
        server_name ssl.koten.com;
        return 302 https://$server_name$request_uri;
}
[root@LB01 ~]# systemctl restart nginx

5、浏览器访问 

真实业务实现HTTPS证书

1、配置LB01中的wordpress和wecenter的配置

[root@LB01 ~]# cat /etc/nginx/conf.d/proxy_ssl.conf 
upstream webs {
        server 172.16.1.7:80;
        server 172.16.1.8:80;
}

#用户的http请求跳转至https
server {
        listen 80;
        server_name blog.koten.com;
        return 302 https://$server_name$request_uri;
}

server {
        listen 80;
        server_name wecenter.koten.com;
        return 302 https://$server_name$request_uri;
}   

server {
        listen 443 ssl;
        server_name blog.koten.com;
        ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;
        location / {
                proxy_pass http://webs;
                include proxy_params;
        }
}

server {
        listen 443 ssl;
        server_name wecenter.koten.com;
        ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;
        location / {
                proxy_pass http://webs;
                include proxy_params;
        }       
}
[root@LB01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@LB01 ~]# nginx -s reload

2、浏览器访问

发现均出现排版错误的情况,这是因为PHP对https不适配。

 3、修正排版问题

需要在Web01和Web02的Wecenter和WordPress配置文件里添加如下配置,并重启Nginx

#告诉PHP我前置的负载使用的是https协议                
fastcgi_param HTTPS on;

例如Web01的WordPress配置文件

[root@Web01 wecenter]# cat /etc/nginx/conf.d/wordpress.conf 
server {
	listen 80;
	server_name blog.koten.com;
	root /code/wordpress;
	index index.php index.html index.htm;

	location ~\.php$ {
		root /code/wordpress;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS on;
		include fastcgi_params;
	}
}
[root@Web01 wecenter]# 

4、再次访问发现恢复

5、phpmyadmin配置文件与问题

[root@LB01 ~]# cat /etc/nginx/conf.d/proxy_php.conf 
upstream web {
        server 172.16.1.7:80;
        server 172.16.1.8:80;
}

server {
        listen 80;
        server_name php.koten.com;
        return 302 https://$server_name$request_uri;
}

server {
        listen 443 ssl;
        ssl_certificate   ssl_key/server.crt;
        ssl_certificate_key  ssl_key/server.key;
        server_name php.koten.com;
        location / {
            proxy_pass http://web;
            include proxy_params;
        }
}
[root@LB01 ~]# systemctl restart nginx

6、解决phpmyadmin问题

在Web01和Web02的phpmyadmin配置文件上增加如下配置:

fastcgi_param HTTPS on;

恢复正常!


我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录--九个超级好用的 Javascript 技巧

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 在实际的开发工作过程中&#xff0c;积累了一些常见又超级好用的 Javascript 技巧和代码片段&#xff0c;包括整理的其他大神的 JS 使用技巧&#xff0c;今天筛选了 9 个&#xff0c;以供大家参考…

从选型工具到内核优化,从替代方法到迁移改造,河北移动联合云和恩墨以创新树标杆,推进国产数据库应用落地...

势在必行&#xff0c;电信行业国产化改造适逢其时 自十四五规划以来&#xff0c;伴随着“科技创新”和“信息安全”等相关政策的密集出台&#xff0c;我国信创产业正式进入高速发展期&#xff0c;力求通过构建各行业全栈国产IT体系&#xff0c;实现科技技术自主可控&#xff0c…

原来我真的不懂Spring

(1)Spring的生命周期:简单概括为4个阶段: 1.1 创建对象 1.2 DI属性赋值 1.3 初始化 1.4 销毁 (2) Bean的作用域 : 1. Singleton: 单例 2. Prototype: 多例 3. Request: 每次http请求都会创建一个新的bean 4. Session: ~ 5. ApplicationContext: ~ (3) 注册Bean的4种方式…

企业即时通讯如何让企业沟通变得简单

企业即时通讯&#xff0c;企业之间的沟通协作&#xff0c;最核心的价值在于能够将复杂的工作任务简化为更高效、更易于沟通的协作方式。如果员工之间没有协作&#xff0c;就没有办法进行高效的沟通&#xff0c;就会出现组织低效、沟通效率低等问题。那么如何将复杂的工作任务简…

多路复用是怎么回事?

《计算机组成原理》讲述的是如何去理解程序和计算。《操作系统》讲述的是如何去理解和架构应用程序。《计算机网络》讲述的是如何去理解今天的互联网。 现在来看&#xff0c;“计算机网络”也许是一个过时的词汇&#xff0c;它讲的是怎么用计算实现通信。今天我们已经发展到了一…

HTTPS(面试高频必须掌握)

目录 一、HTTPS背景 二、HTTPS 的工作过程 1. 对称加密 2.非对称加密 3. HTTPS 基本工作过程 3.1 使用对称密钥 3.2 引入非对称密钥&#xff08;面试高频问题&#xff09; 3.3 黑客的手段 3.4 引入证书 3.5 捋一捋 3.6 SSL/TLS 三、HTTP 与 HTTPS 区别&#xff08;…

强化学习的应用领域和案例

你好&#xff0c;我是zhenguo(郭震) 今天总结强化学习第四篇&#xff1a;强化学习的应用领域 第一&#xff1a;游戏领域。 强化学习在游戏领域有很多应用&#xff0c;如围棋、象棋、扑克等游戏的AI对战。 例如&#xff0c;AlphaGo使用强化学习技术&#xff0c;在围棋比赛中击败…

要做存储业务,我解析了一个项目的源码

最近在做存储相关的业务&#xff0c;更具体的来说是存储相关的研发&#xff0c;于是就上网查了一下相关的资料&#xff0c;思虑再三打算从最简单的 Json 数据交换格式开始研究。 JSON是独立于编程语言的数据交换格式&#xff0c;几乎所有与网络开发相关的语言都有JSON函数库&am…

chatgpt赋能Python-python_figsize

Python figsize&#xff1a;图形大小的更改 在Python数据可视化中&#xff0c;通过更改图形的大小可以使得图形更易于阅读和理解。绘图函数的“figsize”参数可以让您控制图形的大小。本文将探讨figsize的含义、使用示例以及如何根据您的需要精确调整图形大小。 什么是figsiz…

【CSAPP】虚拟内存(VM)

&#x1f4ad; 写在前面&#xff1a;本文将学习《深入理解计算机系统》虚拟内存部分&#xff0c;CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写&#xff0c;该教材由Randal E. Bryant和David R. OHallaron 合著。 &#x1f4dc; 本章目录…

【Python】判断语句 ④ ( 判断语句嵌套 )

文章目录 一、判断语句嵌套1、语法说明2、代码示例 一、判断语句嵌套 1、语法说明 在 Python 的开发场景中 , 除了 单个条件判定 : if 条件判定 , if else 条件判定 ;多个并列条件判定 : if elif else 条件判定 ; 之外 , 还有 满足 前置条件判定 后 进行 第二次条件判定 的开…

C#,码海拾贝(21)——线性方程组求解的全选主元高斯消去法之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static class LEquations { /// <summary> /…

chatgpt赋能Python-python_geany

了解Python Geany: 一种强大且高效的Python IDE 介绍 Python Geany是一种非常流行的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;是由Geany团队开发的。它是一种跨平台的开发工具&#xff0c;可在Windows、Linux和macOS等不同平台上运行。Python Geany提供了支…

Linux常用命令——host命令

在线Linux命令查询工具 host 常用的分析域名查询工具 补充说明 host命令是常用的分析域名查询工具&#xff0c;可以用来测试域名系统工作是否正常。 语法 host(选项)(参数)选项 -a&#xff1a;显示详细的DNS信息&#xff1b; -c<类型>&#xff1a;指定查询类型&am…

小白畅玩免费支持ChatGPT3和4,一键定制自己专属AI

AI爆炸时代。你不用AI&#xff0c;别人就会用AI,当别人用AI,为自己给工作生活赋能时候。生活自在&#xff0c;工作高效&#xff0c;AI正在潜移默化改变我们生活 基于OPEN AI平台 轻松让AI 为你的生活赋能. 总之我现在生活已经离不开AI&#xff0c;帮助了。 不管是工作上问题…

第四范式涂威威:企业专属大模型技术需闭环数据、思维链学习、高落地效率...

‍ 近日&#xff0c;以“智行天下 能动未来”为主题的第七届世界智能大会隆重举办&#xff0c;第四范式副总裁、主任科学家涂威威出席高峰会&#xff0c;与中国工程院院士邬江兴、德国弗劳恩霍夫电子纳米系统研究所所长Harald Kuhn、高通公司中国区董事长孟樸等院士及企业代表&…

chatgpt赋能Python-python_for_in遍历列表

Python for-in循环遍历列表&#xff1a;最简单易用的方法 Python是最流行的编程语言之一&#xff0c;也是许多开发人员的首选工具。其中&#xff0c;for循环是Python最重要的控制结构之一&#xff0c; for-in循环是其中最常用的形式之一。在本文章中&#xff0c;我们将重点介绍…

做流量卡代理,看看人家是怎么赚钱的?

这两年来&#xff0c;流量卡市场可谓是一片欣欣向荣&#xff0c;三大运营商也推出了多款热门套餐。 ​ 作为上网的主要方式&#xff0c;流量卡在这两年可谓是“风光无限”&#xff0c;上至60岁老人&#xff0c;下至16岁的学生都在使用&#xff0c;就连小编的亲戚朋友也都在网上…

chatgpt赋能Python-python_gi

Python-GI: 一个强大的Python库 Python-GI是一个用于Python的开源库&#xff0c;它提供了一个统一的接口来访问底层的系统库。这个库的目的是方便Python开发人员使用底层操作系统或系统库的底层功能。Python-GI是GNOME桌面环境的一部分&#xff0c;它为Python开发人员提供了访…

因果

数字化转型已经喊了很多年了&#xff0c;但是很多人仍然不明白数字化转型是怎么回事&#xff0c;为啥要转。很多人甚至以为数字化转型就是个营销噱头&#xff0c;还有人跟着瞎起哄什么互联网红利消失、中国供给侧和消费侧人口红利消失等等。 我不讲&#xff0c;很多人都不知道。…