关于SSL原理的详解

关于SSL原理的详解关于 SSL 原理的详解 SSL 原理详解一 SSL 是什么 认证原理二 使用步骤 1 引入库 2 读入数据总结 SSL 原理详解其实 SSL 从网上看到的资料很多了 但是发现还是没有将原理讲得特别清楚 尤其是对 CA 433 端口与 80 端口的数据传输原理 都没有说得很清楚 通过在网上找相关资料 写此博客也便以后自己回顾 SSL 主要解决的问题是什么 是解决防钓鱼网站 防中间人攻击 利用非对称加密 让客户端和服务端进行密码协商 然后用对称加密进行数据传输 以确保数据传输的安全性 那么怎么解决传输的中间人截取信息后伪造数据的问题


SSL原理详解


一、SSL是什么?

应用层

SSL Handshake Protocol

SSL Record Protocol

TCP

二、建立SSL通道过程

1.简化篇

客户端向跟服务端443端口说:哥们,建立一个安全连接吧,你在不在?
服务端回应说:在的,我有DES、AES、IDEA加密算法,你看用哪个?
客户端说:我们用DES吧,私钥是abc123;
服务器端说:收到,我们建立连接吧。
于是客户端利用DES算法将请求信息利用密钥abc123加密,向服务器端80端口发送请求;服务器端获取数据后,利用DES算法和密钥abc123解密,并将结果发回给客户端。由于私钥只有客户端和服务端知道,这样保证数据通信的安全性。



那么问题来了,怎么保证客户端和服务端商量算法和密钥的时候是安全的,不会被中间人获取后,伪造信息呢?

2.具体建立过程

Client GoodRouter BadRouter Server CA 申请证书,注册域名和公钥 CA利用CA的私钥加密Server(域名和公钥),由于GoodRouter和BadRouter只有CA的公钥, 没有私钥信息,所以无法篡改,只能老老实实转发 利用CA公钥解密,获得Server公钥 利用Server的公钥加密“Server, Client想和你建立个连接” “Server, Client想和你建立个连接” 我想篡改,但是我只有Server的公钥, “Server,Client想和你建立个连接”也是用公钥加密过的,只能转给Server 利用私钥解密,得到 Client想跟我建立连接的请求 利用私钥加密,“在的,我有DES、AES、IDEA加密算法,你看用哪个” 中间传输过程因为都是加密的,所以中间人无法篡改,我就忽略了 用Server的公钥加密“我们用DES吧,私钥是abc123” 用Server的私钥加密“收到,我们建立连接吧” DES算法和私钥abc123加密请求,将数据发送给服务端,获取数据 Client GoodRouter BadRouter Server CA

那么还有一个问题,CA的公钥是怎么下发给Client的呢,因为CA如果是通过网络下发的,都有可能有中间人(BadRouter)伪装自己是CA公司,将假证书下发给Client,这样Client的任何请求都可能以假证书的公钥加密,发给BadRouter,BadRouter将解密的信息再包装后发给Server,Server回的信息就都给了BadRouter,BadRouter把造假信息以Server的名义回给Client。这样信息就被劫持了,你的银行卡就被盗了。
那怎么解决,其实是通过操作系统来保证的。操作系统安装时就已经安装了公认安全的CA公司的数字证书,怎么找呢?看下面的截图
CA证书
所以如果安装的盗版操作系统,可能会被植入伪造的CA证书。具体操作可以看看我的另外一篇博客内网数字证书的生成与使用



总结

以上就是我总结的网上资料关于SSL的安全加密的过程,当然TCP协议握手属于比较基础的知识,就不在这里赘述了。简单的说整个过程就是建立在CA证书的签发机构的公信力之上,如果CA本身安全性无法保证,那整个安全通信的机制就瓦解了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217584.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午9:15
下一篇 2026年3月18日 上午9:15


相关推荐

  • 人民币符号输入的几种方法图片_元的符号怎么打出来

    人民币符号输入的几种方法图片_元的符号怎么打出来人民币符号输入的几种方法直接利用键盘输入¥ shift+4(键盘第二行数字,中文输入法)¥Alt+41892(右侧小键盘数字,GBK,全角)¥Alt+0165(右侧小键盘数字,Unicode)C/C++输出#include<iostream>//只用C语言的话,可将这两行换为usingnamespacestd;//#includ…

    2025年8月8日
    4
  • 2019/7/3

    2019/7/31176E-Coverit!树的题常与层数,出度有关

    2022年6月16日
    42
  • postman 导出python爬虫代码

    postman 导出python爬虫代码postman导出python爬虫代码importrequestsurl=”https://www.baidu.com/”payload={}headers={‘Connection’:’keep-alive’,’Cache-Control’:’max-age=0′,’sec-ch-ua’:'”GoogleChrome”;v=”95″,”Chromium”;v=”95″,”;NotABrand”;v=”99″‘,’sec-ch-ua-mobil

    2022年5月27日
    43
  • Gpt-4o 新功能史上最强,Gpt4o生图实测与教学

    Gpt-4o 新功能史上最强,Gpt4o生图实测与教学

    2026年3月15日
    2
  • java加入md5_javamd5加密解密

    java加入md5_javamd5加密解密方法二、importjava.security.spec.*;classMD5_test{publicfinalstaticStringMD5(Strings){charhexDigits[]={‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’a’,’b’,’c’,’d’,’e’,’f’};try{byte…

    2022年7月14日
    37
  • Python关键字及其含义

    Python关键字及其含义关键字含义 False 布尔类型的值 表示假 与 True 相对 None 表示什么也没有 自己的数据类型 NoneTypeTrue 布尔类型的值 表示真 与 False 相反 and 用于表达式运算 逻辑与操作 as 用于类型转换 assert 断言 用于判断变量或者条件表达式的值是否为真 break 中断循环语句的执行 class 用于定义类 cont

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号