首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

基于 OpenSSL 的 CA 建立及证书签发

前段时间研究了一下 SSL/TLS ,看的是 Eric Rescorla 的 SSL and TLS - Designing and Building Secure Systems 的中文版(关于该中文版的恶劣程度,我在之前的一篇 Blog 中已做了严厉的批判)。本书的作者沿袭了 Stevens 在其神作 TCP/IP Illustrated 中的思想:使用网络嗅探进行协议演示。不同的是,作者并没有使用 tcpdump ,而是使用了自己编写的专用于嗅探 SSL/TLS 通讯的ssldump 。为了对书中的一些内容进行试验确认,我决定使用 ssldump 进行一些实验。然而,进行 SSL/TLS 通讯,至少需要一份 CA 签发的证书才可以得以完成,仅仅是做个实验,我自然不会花天价去买个证书,所以决定自己建 CA 签发证书。

01

【Java小工匠聊密码学】--非对称加密--概述

非对称加密算法需要两个密钥:[公开密钥] (publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对[密钥] 并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。

03

https通信过程的简单理解

A. client 连接请求发送到server, server根据配置,发送自己相应的证书给客户端的应用程序(通常是浏览器),这时候的证书中含有的信息包括:证书的概要(明文信息), 证书概要生成的hash值的加密值(这个hash值是被服务端证书对应的私钥加密过的). 证书概要中包含有哪些信息不在这里讨论. B. 客户端收到证书之后,会从证书的概要中读取证书的发行机构,再查找自己的可信任证书列表,看证书的发行机构是否是可以信任的,如果不在可信任证书列表中,那么就会弹出:证书不可信的提示. 这时候需要信任根证书才可以继续. C. 在”证书的发行机构“被信任之后(把发行机构的CA证书添加到可信任列表就可以完成),继续从证书的概要中读取 服务端的证书的 公钥,并利用该公钥解密那个 被加密的hash, 从而获得证书概要的 hash. 然后 客户端的应用程序 还需基于证书概要的明文信息,根据指定的算法计算出实际的hash, 比较这个计算出来的hash 和那个解密出来的hash, 如果两者相等,那么证书验证成功,可以继续进行通信。如果两者不同,那么证书验证失败,通信至此结束. D. 证书验证成功之后,客户端的应用会 通过这个证书和服务端进行一个加密的通信协商(公钥加密,私钥解密 / 私钥加密,公钥解密),这个协商的目标是产生一个对称加密的密钥。 E. 密钥生成之后,那么就会 利用这个对称密钥进行通信了. 那么为什么不用密钥对的方式进行通信呢? 因为密钥对进行通信,那么在C/S 双方都会消耗更多的资源进行加解密操作,这个对通信的效率会有不少的影响,特别是传输大量数据的时候,对效率的影响就很明显,所以https的通信,都是用 密钥对协商一个 对称密钥,然后用对称密钥进行通信过程的加密,而不是一直用密钥对进行加解密.

02

三种非对称加密算法总结

1、DH 非对称算法的基石 仅能用于密钥分配,不能用于加解密数据,一般加密数据用AES 密钥长度:512~1024中的64的整数倍 双方各有自己的密钥对 2、RSA 最经典的非对称加密算法 也可认为是使用最多的非对称加密算法 能用于密钥分配,也能用于加解密数据(“私钥加密,公钥解密”和“公钥加密,私钥解密”) 密钥长度:512~65536(64的整数倍) 只有发送方有一个密钥对,或者更安全的做法是:双发均生成自己的密钥对,但是后边使用密钥对进行加解密时与DH的区别查看前一章 可用于数字签名 3、ElGamal 数字签名DSA的基础 具体实现方式只有BC有,与RSA的实现方式类似 只有“公钥加密,私钥加密”方式(公钥加密实际上安全性不高) 密文会成倍扩张

01
领券