关于SSL原理的详解


SSL原理详解

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


一、SSL是什么?

SSL(Secure Sockets Layer 安全套接字协议)。传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。可分为两层:

应用层
SSL Handshake Protocol
SSL Record Protocol
TCP

1、SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密支持。 确保机密性、完整性
2、SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。
3、警报协议(SSL Alert protocol)客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。

二、建立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本身安全性无法保证,那整个安全通信的机制就瓦解了。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一款高性能的Web服务器和反向代理服务器,它也支持SSL/TLS加密协议。为了配置Nginx的SSL/TLS,你需要进行以下步骤: 1. 获取SSL证书:首先,你需要从可信任的证书颁发机构(CA)或者使用自签名证书来获取SSL证书。证书一般包括公钥、私钥和证书链。 2. 将证书文件放置在合适的位置:将获取到的证书文件放置在一个安全的目录中,例如"/etc/nginx/ssl/"。 3. 配置SSL参数:在Nginx的配置文件中,找到需要启用SSL的server块。在该块中添加以下配置参数: ``` listen 443 ssl; ssl_certificate /etc/nginx/ssl/certificate.crt; # SSL证书文件路径 ssl_certificate_key /etc/nginx/ssl/private.key; # 私钥文件路径 ``` 这些配置项指定了监听端口为443,并且指定了SSL证书和私钥的路径。 4. 配置SSL协议和密码套件:为了增强安全性,你可以配置Nginx使用特定的SSL协议版本和密码套件。以下是一个示例配置: ``` ssl_protocols TLSv1.2 TLSv1.3; # 仅启用TLSv1.2和TLSv1.3协议 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512; # 指定密码套件 ssl_prefer_server_ciphers on; # 优先使用服务器指定的密码套件 ``` 这个示例配置启用了TLSv1.2和TLSv1.3协议,并且指定了密码套件。 5. 重启Nginx服务:完成以上配置后,保存并退出Nginx配置文件。然后,使用命令重启Nginx服务,以使配置生效。 ``` sudo service nginx restart ``` 配置完成后,Nginx将开始通过HTTPS监听443端口,并使用配置的SSL证书进行加密通信。请确保你的SSL证书有效,并按照最佳实践进行SSL/TLS配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值