最近两三个月,断断续续的一直在处理CA证书相关的事情。CA证书本质上也是一种加解密,因此就自然而然的涉及到一些加密和解密的技术,这就让我在了解CA的同时,也对加密和解密有了更进一步的认识和理解。
以下便是一个比较杂,但是似乎又有一定关联性的总结,我分了这样几个部分:

1.加密和签名
2.对称加密和非对称加密
3.密钥、公钥和私钥
4.图解签名和加密的必要性
5.CA证书转换

加密和签名

网络通信过程中,要保证通信的安全和数据的安全,就需要对交互双方的身份进行确认,并保证最终业务使用的数据是正确的、未被篡改的、被窃取而无法解析的。
要做到上述要求,就需要使用到加密和签名,通常交互双方的身份确认称作签名验签,而业务数据的安全措施称为加密解密。
就目前的理解来说,签名验签实际也是一种加解密。

对称加密和非对称加密

加解密一般都需要一个密钥,如果加密的密钥和解密的密钥一样,则称作对称加密。否则,若加密的密钥和解密的密钥不一样,则称作非对称加密。

密钥、公钥和私钥

无论公钥还是私钥,都是密钥。
密钥,理解为就是密文加密和解密的钥匙。
公钥,理解为公开的密钥。
私钥,理解为私有的密钥。
需要注意的是,密钥,不是秘钥。我刚接触的时候,就总是把这两个弄混淆,结果导致几个概念傻傻分不清。
因为秘钥和私钥似乎是一个意思,所以一旦密钥理解成秘钥,就会影响对公钥和私钥的理解。

公私钥一般成对出现,有自己的关联关系,可以互相加解密,即公钥加密则私钥解密,私钥加密则公钥解密。

图解签名和加密的必要性

最初的网络数据传输使用明文传输,那么通讯过程中完全无法确保数据不被窃取使用和篡改,如下图:

于是便出现了数据的加密机制,这样可以确保通信过程中被窃取的数据,在没有密钥的情况下难以被解析。即使遭到篡改,接收方也无法解析,而不会继续进行逻辑处理,如下图:

但是,这种情况下一旦窃取数据者也拥有了密钥,那么就一样的能够解析和篡改数据。对称加密的场景下,密钥相同,泄露的可能性很大,非对称加密的场景下,公钥是公开的,本身就被很多人持有。
那么数据窃取者有了密钥之后的情景就大致如下:

因此,在数据加密的基础上,就又引入了身份验证,这样就可以确保数据即使被篡改,也不会被正确验证和解析,进一步保证了业务安全,如下图:

以上所述应用到软件中,实际上是基于http请求,签名、加密等都发生在实际代码中。
于是后来有了更进一步的安全措施,即https,在这里边就引入了CA证书的概念和技术。
单从通信层面来讲,CA证书有根证书和通信证书的区分,实际上是为了进一步保证服务端和客户端之间的可信度,进一步保证了通信双方的身份合法性。
更多ca相关内容可参考我的另两篇博客:
https://blog.csdn.net/tuzongxun/article/details/88647172
https://blog.csdn.net/tuzongxun/article/details/89217001

CA证书转换

ca证书有各种格式和不同的文件结尾,很多都是可以相互进行转换的,也都有不同的使用场景。
例如java通常使用jks文件,安卓通常使用bks文件,而浏览器可能使用pfx文件等。
以下是部分转换的记录:

根证书链pem转jks

keytool -import -noprompt -file root.pem -keystore root.jks -storepass 123456

证书pfx转jks

keytool -importkeystore -srckeystore  client.pfx -srcstoretype pkcs12 -destkeystore client.jks -deststoretype JKS

证书pfx转crt和key

openssl pkcs12 -in client.pfx -nodes -out client.pem
openssl rsa -in client.pem -out client.key
openssl x509 -in client.pem -out client.crt

根证书链pem转cer

openssl x509 -inform pem -in root.pem -outform der -out root.cer

证书jks转bks需要借助工具

参见
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0831/3393.html

加密解密和CA证书杂记相关推荐

  1. java加密解密与数字证书的操作

    2019独角兽企业重金招聘Python工程师标准>>> 1 Java程序实现密钥库的维护 1.1 Java程序列出密钥库所有条目 import java.util.*;   impo ...

  2. 使用X.509数字证书加密解密实务(二)-- 使用RSA证书加密敏感数据(转)

    转自:http://www.cnblogs.com/chnking/archive/2007/08/30/875947.html 使用X.509数字证书加密解密实务(二)-- 使用RSA证书加密敏感数 ...

  3. 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用

    为了防止我们的数据泄露,我们往往会对数据进行加密,特别是敏感数据,我们要求的安全性更高.下面将介绍几种常用的加密算法使用.这些算法的加密对象都是基于二进制数据,如果要加密字符串就使用统一编码(如:ut ...

  4. 加密解密概述及openssl应用及其创建CA和签发证书的实现

    数据非常重要,这是大家的共识,为了保证数据的安全,就会涉及到加密及其解密,本文主要介绍加密 解密相关概念及其在Linux平台下加密解密的具体实现openssl基础,及openssl创建CA和签发证书: ...

  5. 学习笔记:公钥私钥 签名验签 加密解密 CA 证书

    重点: 1.区分加密解密和签名验签(在非对称加密情景下) 加密解密:#A给B发消息# A用B的公钥进行运算(加密),B收到后用B自己的私钥进行逆向运算(解密) 签名验签:#A给B发消息# A用A自己的 ...

  6. Linux之加密及CA证书

    加密方法的种类主要分为三种:单向加密,非对称加密,对称加密. 单向加密:不是加密,而是提取数据特征码,主要用于验证数据的完整性. 非对称加密:非对称加密也称公钥加密,密钥成对出现.主要用于密钥交换和数 ...

  7. linux加密解密基础、PKI及SSL、创建私有CA

    linux加密解密基础.PKI及SSL.创建私有CA 1.加密解密基础:            数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡 ...

  8. 加密解密、Openssl、自建CA

    一.三种加密方式    1.对称加密 工作机制:需要对加密和解密使用相同密钥的加密算法.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密.将原文分割成固定大小的数据块,对这些进行 ...

  9. **加密解密基础、PKI及SSL、创建私有CA**

    进程间通信 socket通信 客户端-->请求--> 路由转发 --> 服务端,取出资源 --> 封装为可响应给客户端的请求报文从接收请求端口发出 SSL/TLS协议的实现 O ...

最新文章

  1. 截取前四位字符串_Python的字符串切片
  2. PHP下的浮点运算不准的解决办法
  3. 小米澄清传闻:不存在跨境转移利润及逃避缴纳税款行为
  4. C#学习 小知识_多态的简单实现_2018Oct
  5. c# 编写自定义异常类
  6. PCB上走100A电流的方法
  7. 图像处理 --- 一、认识图像处理
  8. 重温这几个屌爆的Python技巧!
  9. nginx静态文件服务器_Linux分享文件?快速创建静态文件服务器
  10. C++11 委托构造函数
  11. Mozilla推荐的CSS属性书写顺序及命名规则
  12. Microsoft Visio premium2010激活
  13. 规避VMware虚拟机检测
  14. IntelliJ IDEA中创建jsp项目
  15. 51单片机用三种方法实现流水灯(超详细)
  16. 动态IP和静态IP有什么区别
  17. 用鸽 计算机教案,幼儿园音乐教案《鸽子》
  18. 大漠穷秋:全面解读Angular 4.0核心特性
  19. 百度网盘下载资源太慢,教你一招,速度直接提升到10MB/s
  20. 使用GCD(转自唐巧的技术博客)

热门文章

  1. 多源传感器GNSS INS 视觉 LiDAR 组合导航与SLAM开源项目总结
  2. 蓝色蝴蝶(好听的毕业歌)
  3. 在clubof.net上建立了个人主页
  4. 崩坏2服务器维护,崩坏学园2(日服)无法连接服务器是什么原因
  5. excel work
  6. msi 微星b350 tomahawk主板 刷bios教程
  7. 在KTV选什么歌才能成为麦霸?
  8. 使用Sharepoint Designer 无法打开站点提示错误403 forbidden
  9. excel从入门到忘记 学习心得分享(含百度网盘分享)
  10. 基于单片机的电子时钟设计(keil+protues仿真,含代码及原理图)