SSL在https和MySQL中的原理思考
之前对HTTPS通信过程有过了解,HTTPS是应用HTTP协议使用SSL加密的版本,在TCP和HTTP之间增加SSL协议。通过握手阶段认证双方身份,协商对称秘钥对通信信息进行加密。此处只描述常用的服务器单向验证,大致过程简要描述如下:
0:事先Web服务器把自己的公钥和Web信息提交给权威CA,CA确认后,用自己的私钥将Web信息以及公钥的文摘签名,制成数字证书交给Web服务器;
客户端Web浏览器事先安装被信任的权威CA的根证书(未签名证书或者自签名证书)
1:客户端向服务器发起连接请求,协商使用的SSL版本、非对称加密算法、对称加密算法以及摘要生成算法,双方达成共识
2:Web服务器向客户端发送自己的数字证书,客户端用CA的根证书解密,证明Web服务器身份真实,同时证明服务器公钥正确
3:客户端用服务器公钥加密一个随机数,作为通信收发数据的对称秘钥,发送给服务器
4:服务器用自己的私钥解密,拿到对称秘钥,返回ACK
5:客户端和服务器使用对称秘钥开始通信
到学习MySQL的SSL连接配置时产生一个疑问,HTTPS有CA作为可信第三方,负责确认服务器身份,而MySQL连接通信只2方,没听说还有个CA从中协调啊,那还怎么SSL啊?
通过网上查资料,发现自己对SSL相关的很多概念理解不是很准确,对之前CA的验证方式理解不对。首先明确一些概念:
公私钥对:非对称加密算法,公钥和私钥成对出现,用公钥加密用私钥解密,用私钥加密用公钥解密
CA:证书颁发机构,通信双方可信的第三方。自己有公私钥对,网站想证明自己真实可信,但用户不相信自己,只相信CA说的,于是网站提交自己的信息和公钥给CA,CA核实网站信息和提交的公钥,觉得靠谱,于是签名,制成证书,交给网站成为一个资质。
签名:别人不知道我的私钥,但是知道我的公钥。怎么证明这文件是我认证的呢?我用自己的私钥加密,别人用我的公钥解密成功,那肯定知道是我加密的,别人干不了。具体一点,先对文本内容计算散列值,然后对这个散列值用自己的私钥加密。(别人对文本内容计算散列值,然后用我的私钥解密得到的值做对比,一致证明签名OK)
证书:包含3部分,通信方具体信息(地点、域名、组织、拥有者等)、通信方的公钥、权威CA的签名。(具体信息和公钥计算散列值,然后对这个散列值用自己的私钥加密)
根证书:权威CA也有自己的证书(毕竟需要CA的公钥来验证网站证书真伪),那CA的证书谁签名啊?毕竟没有更高一级了,所以根证书是未签名的或者是自签名的,没人给这个证书背书了,所以叫做根,是信任链的起点,都可以理解了。
再看MySQL的SSL连接配置,思考SSL通信过程,就可以理解为什么需要这些文件了(此处描述SSL单向验证模式)
MySQL服务器端要配置3个文件:ssl-ca.pem, ssl-key.pem, ssl-cert.pem
客户端连接时需要文件:ssl-ca.pem
ssl-ca.pem就充当了可信的第三方,CA根证书,文件里包含了CA的信息和公钥,客户端和服务器都有。
1.客户端向MySQL服务器发起连接请求,双方协商加密算法、SSL版本等
2.服务器向客户端发来自己的证书(ssl-cert.pem的内容,CA签名的),客户端用ssl-ca.pem的公钥解密,确认服务器身份和公钥真实。
3.客户端产生随机数作为对称加密的秘钥,用服务器公钥加密,发送给服务器
4.服务器用自己的私钥(ssl-key.pem)解密,拿到这个随机数,返回ACK
5.双方用随机数做密钥,以对称加密方式通信
举一反三,其他应用层协议使用SSL通信时,也是一样的套路了。如果有哪些地方不准确,请留言指正,感谢。
SSL在https和MySQL中的原理思考的更多相关文章
- 你的MySQL服务器开启SSL了吗?SSL在https和MySQL中的原理思考
最近,准备升级一组MySQL到5.7版本,在安装完MySQL5.7后,在其data目录下发现多了很多.pem类型的文件,然后通过查阅相关资料,才知这些文件是MySQL5.7使用SSL加密连接的.本篇主 ...
- 数字证书、SSL、HTTPS及在Nginx中的配置
一.什么是 RSA.SSL.HTTPS RSA:它是非对称加密算法的一种,而且是最常用的一种.它的理论基础是:计算两个大质数的乘积非常简单,而对该乘积进行因子分解就非常困难.而且 这两个质数越大,对其 ...
- MySQL中的事务原理和锁机制
本文主要总结 MySQL 事务几种隔离级别的实现和其中锁的使用情况. 在开始前先简单回顾事务几种隔离级别以及带来的问题. 四种隔离级别:读未提交.读已提交.可重复读.可串行化. 带来的问题:脏读.不可 ...
- 【转】Mysql中事务ACID实现原理
转自:https://www.cnblogs.com/rjzheng/p/10841031.html 作者:孤独烟 引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" ...
- Mysql中主从复制的原理、配置过程以及实际案例
Mysql中主从复制的原理.配置过程以及实际案例1.什么是主从复制?原理:主从分离,什么意思呢?我们不妨画个图看看.如图1所示: 2.准备工作:预备两台服务器,我这里使用虚拟机安装了两个Centos6 ...
- 【原创】Mysql中事务ACID实现原理
引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" 你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isol ...
- Mysql中事务ACID实现原理
引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?"你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isola ...
- Mysql 中的SSL 连接
Mysql 中的SSL 连接 以下来自网络参考和自己测试整理,没有查找相关资料.若有错误之处,欢迎指正. 当前的Mysql 客户端版本基本都不太能支持 caching_sha2_password 认证 ...
- MySQL中InnoDB存储引擎的实现和运行原理
InnoDB 存储引擎作为我们最常用到的存储引擎之一,充分熟悉它的的实现和运行原理,有助于我们更好地创建和维护数据库表. InnoDB 体系架构 InnoDB 主要包括了: 内存池.后台线程以及存储文 ...
随机推荐
- iOS工作笔记(十三)
1.automaticallyAdjustsScrollViewInsets的使用 这是UIViewController的属性,设置为YES就是根据status bar,navigation bar, ...
- Centos7 Cacti-0.8.8g安装及SNMP简介
在官网可以看到关于cacti的下载说明http://www.cacti.net/download_cacti.php Download Cacti The latest stable version ...
- pdflatex, xelatex, texstudio中文编码问题
使用xelatex,源文件需要用utf-8编译,pdf文件不会乱码. 使用pdflatex,源文件不能使用utf-8编码,否则pdf文件会乱码. 使用GB2312没问题.
- ubuntu12.04安装svn 1.7(转载)
ubuntu12.04安装svn 1.7 分类: ubuntu2013-10-22 16:03 239人阅读 评论(0) 收藏 举报 svnubuntu 目录(?)[+] 1.问题 在 ...
- net 连mysql奇怪问题
程序出现以上提示,采用6.3.5的connetor就好了.
- linux下杀死进程(kill)的N种方法
常规篇: 首先,用ps查看进程,方法如下: $ ps -ef ……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx ...
- 关于HTML5代码总结。
在阅读完HTML5后,自己把一些常用的代码总结了一下,自认为比较全,如果有什么错误请指出. 1.<!DOCTYPE html>声明这是一个HTML5的页面 2.<HTML lang= ...
- C3P0连接池连接MySQL出现的问题
1.Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed mor ...
- React与ES6(三)ES6类和方法绑定
React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...
- Windows 8.1 应用再出发 (WinJS) - 几种新增控件(1)
Windows 8.1 和 WinJS 引入了以下新控件和功能,分别是:AppBarCommand.BackButton.Hub.ItemContainer.NavBar.Repeater.WebVi ...