根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。 本文的一部分: 什么是SSL,什么是TLS?官方说法是SSL是安全套接字层(secure sockets layer),TLS是SSL的后继者,称为传输层安全性(transport layer security). 说穿了,就是在明文的上层和TCP层之间增加一层加密,以保证上层信息传输的安全性. 例如,HTTP协议以纯文本格式传输,并且在添加SSL层之后,有一个优雅的名称HTTPS. 其唯一目的是确保用于上层通信安全性的一组机制. 它的发展又经历了以下时期. 像手机软件的升级一样,每次更新都会添加或删除功能,例如引入新的加密算法和修改握手方法. SSL1.0: 已废除 SSL2.0: RFC6176已被取消 SSL3.0: RFC6101,基本上已取消 TLS1.0: RFC2246,其中大多数当前使用此方法 TLS1.1: RF346 TLS1.2: RFC5246,未广泛使用 TLS1.3: IETF正在酝酿中 接下来,我们将介绍TLS1.x如何确保通信安全. 如何确保安全?您是说安全性是安全的,如何实现?绝对安全吗? 哈,有人民,有江湖,有江湖,没有绝对的安全. 但是SSL / TLS确实可以在很大程度上保证信息安全. 以下是基于图1中的SSL / TLS工作流的实现过程的概述. 图1 SSL / TLS工作流程 CA: 证书颁发机构. 它类似于国家出入境管理部门,后者向他人发行护照. 它也类似于国家工商行政管理总局,后者向公司颁发营业执照. 它具有两个主要属性: 1)CA本身是受信任的// //国际认可的 2)向受信任的申请人颁发证书//与护照一样,要确定您的合法身份,您不能是分子或叛乱分子. 当然,您需要受到保护,同时ssl认证,CA可以随时吊销您的证书. 证书是什么样的?实际上,您的计算机中有一堆CA证书. 你可以看看吗: 360浏览器: 选项/设置->高级设置->隐私和安全性->管理HTTPS / SSL证书->证书颁发机构 Firefox浏览器: 首选项->高级->证书->查看证书->证书颁发机构 chrome浏览器: 设置->高级->管理证书->授权中心 ubuntu: / etc / ssl / certs 这些是CA证书! CA的证书ca.crt与SSL服务器的证书server.crt之间有什么关系? 1)SSL Server自己生成一个私钥/公钥对. server.key / server.pub //私钥加密,公钥解密! 2)server.pub生成请求文件server.req. 请求文件包含一些服务器信息,例如域名/申请人/公共密钥等. 3)服务器将请求文件server.req提交给CA. CA验证正确之后,它将使用ca.key和请求文件来生成server.crt 4)由于ca.key和ca.crt是一对,因此ca.crt可以解密server.crt. 在实际应用中: 如果SSL客户端要验证SSL服务器,则SSL服务器必须将其证书server.crt传递给客户端. 然后,客户端使用ca.crt来验证server.crt的合法性. 如果这是网络钓鱼网站,则CA将不会向他颁发有效的server.crt证书,因此客户端将使用ca.crt进行验证,并且它将失败. 例如,如果浏览器是客户端,则您想访问合法的淘宝网站,但如果您不小心访问了该浏览器,则浏览器将检查此假淘宝网络钓鱼网站的非法性,并提醒用户不要继续访问!这样,可以确保客户端的所有https访问都是安全的. 什么是SSL / TLS单向认证和双向认证? 单向身份验证意味着只有一个对象可以验证对等证书的有效性. 通常使用客户端来验证服务器的合法性. 然后客户端需要一个ca.crt,服务器需要server.crt,server.key 双向认证是指相互验证. 服务器需要验证每个客户端,客户端也需要验证服务器. 服务器需要server.key,server.crt,ca.crt 客户端需要client.key,client.crt,ca.crt 图2证书详细工作流程 1)申请认证: 服务器需要生成公钥和私钥对pub_svr和pri_svr,并同时根据pub_svr生成请求文件csr并将其提交给CA. csr包含公钥,组织信息,个人信息(域名)和其他信息. (图1中的server.req是csr请求文件) 2)审核信息: CA通过各种方式(例如,组织是否存在,企业是否合法以及它是否拥有域)来验证申请人提供的信息的真实性,例如和离线名称. 3)颁发证书: 如果信息得到批准,则CA将向申请人颁发认证文件证书. 证书包含以下信息: 申请人的公钥,申请人的组织信息和个人信息,发行机构CA的信息,有效时间,证书序列号等信息,还包含签名. 签名生成算法: 首先,使用哈希函数来计算公共明文信息的信息摘要,然后使用CA的私钥对信息摘要进行加密,并且密文是签名. (server.crt在图1中生成) 4)返回证书: 如果客户端请求验证服务器,则服务器需要返回证书文件. (在图1中,握手返回到server.crt) 5)客户端验证证书: 客户端读取证书中的相关明文信息,使用相同的哈希函数计算消息摘要,然后使用CA的相应公钥对签名的数据进行解密,并对证书进行比较消息摘要,如果相同ssl认证,则可以确的有效性,即公钥合法. 然后,客户端将验证与证书有关的域名信息,是否取消了有效时间等. 客户端将具有内置的受信任CA证书信息(包括公共密钥). 如果不信任CA,则找不到相应CA的证书,并且该证书也将被确定为非法. (在图1中,检查是可选的,我们可以选择不验证服务器证书的有效性) 6)秘密密钥协商: 验证后,服务器和客户端将进行秘密密钥协商. 接下来,服务器和客户端将使用对称密钥加密. (对称的加密时间性能非常出色)(图1中的pre-master / change_cipher_spec / encrypted_handshake_message过程) 7)数据传输: 服务器和客户端使用对称密钥来加密和解密数据. 客户端发起一个请求,以明文形式发送请求信息,包括版本信息,密码套件候选列表,压缩算法候选列表,随机数,扩展字段和其他信息. 相关信息如下: 客户端计算所有接收到的信息的哈希值,并使用协商后的密钥对crypted_handshake_message进行解密,验证服务器发送的数据和密钥,并在验证后完成握手; 开始使用协商的密钥和算法进行加密通信. 我们构建的SSL / TLS服务器为192.168.111.100,客户端为192.168.111.101. 客户端需要验证服务器的合法性. 我们只查看TLSv1.1数据包: 第一个程序包(第25个)Client Hello程序包,即SSL / TLS单向身份验证过程的(1) 第二个软件包(第27号)服务器Hello软件包,包括服务器证书等. 这是SSL / TLS单向身份验证过程的(2) 第三包(第28号)服务器证书验证完成,并且客户端密钥交换+更改密码规范+加密握手消息同时发送. 这就是SSL / TLS单向身份验证过程的(4) 第四包(第29号)密钥协商,更改密码规范+加密的hanshake消息. 即SSL / TLS单向身份验证过程的(5) 第五个数据包(第30个)握手完成. 开始上层数据传输. SSL / TLS单向身份验证过程(7) 它与单向身份验证几乎相同,除了客户端对服务器证书进行身份验证之后,客户端会将自己的证书client.crt传递给服务器. 服务器通过身份验证后,密钥协商开始. 实际的wireshark分析: 与单向身份验证相同: 我们构建的SSL / TLS服务器为192.168.111.100,客户端为192.168.111.101. 客户端需要验证服务器的合法性,服务器还需要验证客户端的合法性! 我们只查看TLSv1.1数据包: 第一个程序包(第55号)Client Hello程序包,即SSL / TLS单向身份验证过程的(1) 第二个软件包(第57号)服务器Hello软件包,包括服务器证书等. 这是SSL / TLS单向身份验证过程的(2) 第三包(第60号)服务器证书验证完成,并且同时发送客户端证书client.crt,其中还包括客户端密钥交换+更改密码规范+加密的握手消息. 也就是说,SSL / TLS单向身份验证过程(4) 第四包(第61号)服务器验证客户端证书的有效性. 通过密钥协商后,更改密码规范+加密的hanshake消息. 即SSL / TLS单向身份验证过程的(5) 重发数据包(第62号)由于网络原因,TCP重发了60号数据包. 第五个数据包(第64个)握手完成. 开始上层数据传输. SSL / TLS单向身份验证过程(7) 扩展名是什么,例如crt / key / req / csr / pem / der? 1).crt表示证书,.key表示私钥,.req表示请求文件,.csr表示请求文件,.pem表示pem格式,.der表示der格式. 您可以根据需要命名文件扩展名. 命名不同的扩展名只是为了了解需求. 但是,文件中的信息已格式化. 与exe和PE格式一样,证书有两种格式. pem格式和der格式. 所有证书,私钥等可以是pem或der格式,具体取决于应用程序的需求. pem和der格式可以相互转换:
der格式: 加密的二进制文件. 2)证书包含申请人的公钥,申请人的组织信息和个人信息,发证机关的CA信息,有效期,证书序列号和其他纯文本信息,还包含签名. 例如,查看百度证书的详细信息. a)首先下载百度证书 要访问Firefox浏览器,请单击左上角的绿色小锁,单击向右箭头,单击更多信息,单击以查看证书,单击详细信息,然后单击导出. 您可以导出百度的证书baiducom.crt b)查看证书详细信息的命令
在详细信息中,存在一个字段: X509v3基本约束: CA: FALSE 此字段指示证书是CA证书还是常规的非CA证书. 有关详细说明,请参阅RFC5280#section-4.2.1.9,并且RFC5280还详细介绍了证书的工作方法. 3)私钥加密,公钥解密! SSL / TLS是一个工作原理,openssl和mbedtls是SSL / TLS的特定实现,非常类似于TCP / IP协议和套接字之间的关系. 我们使用makefile.sh脚本在本地创建一个CA(ca.crt + ca.key),并使用该CA分别向服务器和客户端颁发证书. makefile.sh
将以上代码另存为makefile.sh 进行以下修改,并执行终端. -将CN域中的IP地址更改为主机/设备的IP地址 -[可选]将加密数字1024更改为所需的加密数字 您将看到: ca目录: 保存ca的私钥ca.key和证书ca.crt certder目录: 将证书另存为二进制文件,例如client.der server.der 客户端目录: client.crt client.key 服务器目录: server.crt server.key
删除脚本rmfile.sh:
将上述代码另存为rmfile.sh并在终端中执行,这将删除生成的目录和文件:
我们可以在本地使用CA证书来验证自己颁发的服务器证书server.crt和客户端证书client.crt.
|
温馨提示:喜欢本站的话,请收藏一下本站!