SSH的公钥和私钥的特性

1.公钥和私钥是成对的,它们互相解密。
2.公钥加密,私钥解密。
3.私钥数字签名,公钥验证。

概念解释:
公钥:就是可以公开的密钥,所有人是可知的。
私钥:就是自己保留不公开的密钥,其他人不可知的。
举例说明:
有A和B:
首先A和B各自都有自己的一对公钥和私钥。

A要把数据传给B:
那么:
1.A会用B的公钥来对数据进行加密,然后传给B,B再使用自己的私钥来进行解密。最终得到数据。(A是如何知道B的公钥的呢,因为公钥是公开的,所有人可知。)
2.A如果用自己的私钥来对数据进行加密(数字签名),然后传给B,因为B已经有了A的公钥,所以可以对传过来的数据进行解密,同时验证了A的身份(数字认证)(因为B拥有的公钥确实可以解密这组被A传过来的数据,由密钥都是成对出现的,所以可以确认A的身份。)

B要把数据传给A:
那么:
1.B会用A的公钥来对数据进行加密,然后传给A,A用自己的私钥来进行解密,从而得到数据。
2.B如果用自己的私钥来对数据进行加密,然后传给A,因为A已经有了B的公钥,所以可以对数据进行解密,同时验证了B的身份,理由同上。

注:
一般的私钥加密都会比公钥加密快,所以大数据量的加密一般都会使用私钥加密,而公钥加密会作为身份验证和交换私钥的一个手段。且再后面对端接收到数据以后,还会使用hash算法来对数据的完整性和一致性做判断,从而进一步加强对数据安全性提升。
再则,再实际的应用中,公钥也并不是就随便的公布在网络上的。

SSL:
加密数据的流向:
消息–>[公钥]–>加密后的信息–>[私钥]–>消息
对下面证书目录文件的解释:
123456789.key 由SSL机构根据你提供的身份证明(比如营业执照)颁发的私钥文件
格式:以 “—–BEGIN RSA PRIVATE KEY—–” 开始,以 “—–END RSA PRIVATE KEY—–” 结束,注意复制文件的时候,是包含这一部分的。
123456789.pem 由SSL机构颁发的CA证书文件
格式:以 “—–BEGIN CERTIFICATE—–” 开始,以 “—–END CERTIFICATE—–” 结束,证书秘钥文件内,一般有三组秘钥,使用的时候全部复制。
123456789.pfx 由SSL机构颁发的CA证书,windows下支持本地直接导入
pfx-password.txt 在windows下导入时需要提供的密码(内里是一组密码)
chain.pem 证书链文件,一般用于Apache服务器
pblic.pem 公钥证书文件,也被包含在 “123456789.pem”内

原理理解:
以下来自于:https://www.zhihu.com/question/29620953/answer/45012411

我把SSL系统比喻为工商局系统。首先有SSL就有CA,certificate authority。

证书局,用于制作、认证证书的第三方机构,我们假设营业执照非常难制作,就像身份证一样,需要有制证公司来提供,并且提供技术帮助工商局验证执照的真伪。

然后CA是可以有多个的,也就是可以有多个制证公司,但工商局就只有一个,它来说那个制证公司是可信的,那些是假的,需要打击。

在SSL的世界中,微软、Google和Mozilla扮演了一部分这个角色。也就是说,IE、Chrome、Firefox中内置有一些CA,经过这些CA颁发,验证过的证书都是可以信的,否则就会提示你不安全。

也因为内置的CA是相对固定的,所以当你决定要新建网站时,就需要购买这些内置CA颁发的证书来让用户看到你的域名前面是绿色的,而不是红色。而这个最大的卖证书的公司就是VeriSign如果你听说过的话,当然它被卖给了Symantec,这家伙不只出Ghost,还是个卖证书的公司。

要开店的老板去申请营业执照的时候是需要交他的身份证的,然后办出来的营业执照上也会有他的照片和名字。身份证相当于私钥,营业执照就是证书,Ceritficate,.cer文件。数据的流向是这样的。

消息–>[公钥]–>加密后的信息–>[私钥]–>消息

公钥是可以随便扔给谁的,他把消息加了密传给我。
对了,可以这样理解,我有一个箱子,一把锁和一把钥匙,我把箱子和开着的锁给别人,他写了信放箱子里,锁上,然后传递回我手上的途中谁都是打不开箱子的,只有我可以用原来的钥匙打开,这就是SSL,公钥,私钥传递加密消息的方式。这里的密钥就是key文件。于是我们就有了.cer和.key文件。

接下来说keystore不同的语言、工具序列SSL相关文件的格式和扩展名是不一样的。

其中Java系喜欢用keystore, truststore来干活,你看它的名字,Store,仓库,它里面存放着key和信任的CA,key和CA可以有多个。这里的truststore就像你自己电脑的证书管理器一样,如果你打开Chrome的设置,找到HTTP SSL,就可以看到里面有很多CA,truststore就是干这个活儿的,它也里面也是存一个或多个CA让Tomcat或Java程序来调用。而keystore就是用来存密钥文件的,可以存放多个。然后是PEM,它是由RFC1421至1424定义的一种数据格式。其实前面的.cert和.key文件都是PEM格式的,只不过在有些系统中(比如Windows)会根据扩展名不同而做不同的事。所以当你看到.pem文件时,它里面的内容可能是certificate也可能是key,也可能两个都有,要看具体情况。可以通过openssl查看。

参考文献:
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=8877552&id=5570339
https://www.zhihu.com/question/29620953/answer/45012411

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值